我正在运行以下代码:
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行引发了以下错误:
不能将元组连接到字节
欢迎提出任何建议。
答案 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'
整个表达式的计算结果为字符串 第一个
%s
被k
的值替换; 第二个%s
被v
的值替换 字符串中的所有其他字符(在本例中为等号)保持原样 请注意,(k, v)
是一个元组。
阅读: