不同的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"
前面有一个b !!
但是大多数数据库实例的返回是正确的:
print(create_table_sql)
只需返回"CREATE TABLE"
,前面不要有b。
出什么问题了?
答案 0 :(得分:0)
b前缀表明它是bytes
对象,而不是str
。
您可以使用.decode(如果知道编码)将bytes
转换为str
:
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)...