показать создать таблицу возврата b "CREATE TABLE - PullRequest
0 голосов
/ 12 октября 2018

Один и тот же код в другом экземпляре базы данных mysql

sql_table_def = 'show create table {}.{}'.format(dbname,table_name)
df_table_def = pandas.read_sql_query(sql_table_def,self.conn)
create_table_sql = df_table_def.head(1)['Create Table'].values[0]

Но иногда возвращаемое значение странное:

print(create_table_sql)
b"CREATE TABLE 

Перед "CREATE TABLE"!

* стоит ab1009 * но большая часть возврата экземпляра db верна:
 print(create_table_sql)

Просто верните "CREATE TABLE", нет b впереди.

В чем проблема?

1 Ответ

0 голосов
/ 12 октября 2018

Префикс b показывает, что это объект bytes, а не str.
Вы можете преобразовать bytes в str, используя .decode(если вы знаете кодировку):

In [11]: b'string'
Out[11]: b'string'

In [12]: b'string'.decode("utf-8")  # the encoding may not be utf-8...
Out[12]: 'string'

In [13]: type(b'string')
Out[13]: bytes

In [14]: type('')
Out[14]: str

Проблема в том, что база данных не знает кодировку и не догадывается (что, вероятно, хорошо).Хотя вы можете обнаружить, что кодировки, отличные от utf-8, не поддерживаются (например, для PyMySQL ) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...