首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >show create table return b"CREATE TABLE

show create table return b"CREATE TABLE
EN

Stack Overflow用户
提问于 2018-10-12 11:26:33
回答 1查看 210关注 0票数 1

不同mysql数据库实例中的相同代码

代码语言:javascript
复制
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]

但有时返回值很奇怪:

代码语言:javascript
复制
print(create_table_sql)
b"CREATE TABLE 

"CREATE TABLE"前面有一个b!

但是db实例的大部分返回值都是正确的:

代码语言:javascript
复制
 print(create_table_sql)

只返回"CREATE TABLE",前面没有b。

有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2018-10-12 12:59:32

B前缀表明它是一个bytes对象,而不是一个str

您可以使用.decode将bytes转换为str (如果您知道编码):

代码语言:javascript
复制
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)...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52771800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档