databaseerror:在sql上执行失败,无法将元组合并到字节

baubqpgj  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(297)

我正在运行以下代码:

db = pymysql.connect(host=host, database=db_name, user=user, password=password)
batchsize = 100
for offset in range(0,1000,batchsize):
     df = pd.read_sql(('SELECT * FROM anime LIMIT %s OFFSET %s', (batchsize,offset)), con=db)
     print("rows and columns: ",df.shape)

但它在第4行抛出了以下错误:
无法将元组合并为字节
欢迎任何建议。

wz3gfoph

wz3gfoph1#

您用元组错误地格式化了sql字符串。
更改:

df = pd.read_sql(('SELECT * FROM anime LIMIT %s OFFSET %s', (batchsize,offset)), con=db)

收件人:

df = pd.read_sql(('SELECT * FROM anime LIMIT %s OFFSET %s' % (batchsize,offset)), con=db)

使用元组绑定值时,必须使用 % 在格式化字符串和元组之间。

>>> k = "uid"
>>> v = "sa"
>>> "%s=%s", (k, v)  
('%s=%s', ('uid', 'sa'))  
>>>   
>>> "%s=%s" % (k, v)
'uid=sa'

整个表达式的计算结果为字符串。
第一个 %s 替换为的值 k ;
第二个 %s 替换为的值 v .
字符串中的所有其他字符(在本例中为等号)保持原样。
请注意 (k, v) 是一个元组。
阅读:
python库参考:字符串格式化操作
深入python:格式化字符串

相关问题