DatabaseError:sql上的执行失败,无法连接到字节

时间:2018-01-16 10:32:42

标签: python mysql

我正在运行以下代码:

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行引发了以下错误:

  

不能将元组连接到字节

欢迎提出任何建议。

1 个答案:

答案 0 :(得分:1)

您使用元组错误地格式化了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'
     

整个表达式的计算结果为字符串   第一个%sk的值替换;   第二个%sv的值替换   字符串中的所有其他字符(在本例中为等号)保持原样   请注意,(k, v)是一个元组。

阅读