pymysql更新不工作
pymysql update not working
我需要做一个更新所以我做了这个,但是我遇到了这个代码的问题。
def runUpdate(query, aux):
#Establecemos la conexion con la base de datos
connection = pymysql.connect(host='localhost', user='root', password='root', db='influencers', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
#Ejecutar query
cursor.execute(query, aux)
result = cursor.fetchall()
#Guardar cambios conexion
connection.commit()
finally:
connection.close()
看起来还可以,但是当我做这个的时候:
runUpdate("""UPDATE Influencers SET tweets = '%s' WHERE usuario = '%s'""", (numTweets, user))
它在这里抛出一个错误:
cursor.execute(query, aux)
这是一些控制台文本:
(...)
return escape_str(value, mapping)
File "/Library/Python/2.7/site-packages/pymysql/converters.py", line 71, in escape_str
return "'%s'" % escape_string(value, mapping)
File "/Library/Python/2.7/site-packages/pymysql/converters.py", line 68, in escape_string
lambda match: ESCAPE_MAP.get(match.group(0)), value),))
TypeError: expected string or buffer
我认为我的语法有误,但我不明白为什么。我正在 Python 学习编码,所以请注意 :)
请打印你的 numTweets 和 user ,检查它们是否是字符串。
如果你的 para numTweets 和 user 是列表类型,你应该使用
cursor.executemany(operation, seq_of_params)
查看文档https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-executemany.html
我需要做一个更新所以我做了这个,但是我遇到了这个代码的问题。
def runUpdate(query, aux):
#Establecemos la conexion con la base de datos
connection = pymysql.connect(host='localhost', user='root', password='root', db='influencers', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
#Ejecutar query
cursor.execute(query, aux)
result = cursor.fetchall()
#Guardar cambios conexion
connection.commit()
finally:
connection.close()
看起来还可以,但是当我做这个的时候:
runUpdate("""UPDATE Influencers SET tweets = '%s' WHERE usuario = '%s'""", (numTweets, user))
它在这里抛出一个错误:
cursor.execute(query, aux)
这是一些控制台文本:
(...)
return escape_str(value, mapping)
File "/Library/Python/2.7/site-packages/pymysql/converters.py", line 71, in escape_str
return "'%s'" % escape_string(value, mapping)
File "/Library/Python/2.7/site-packages/pymysql/converters.py", line 68, in escape_string
lambda match: ESCAPE_MAP.get(match.group(0)), value),))
TypeError: expected string or buffer
我认为我的语法有误,但我不明白为什么。我正在 Python 学习编码,所以请注意 :)
请打印你的 numTweets 和 user ,检查它们是否是字符串。
如果你的 para numTweets 和 user 是列表类型,你应该使用
cursor.executemany(operation, seq_of_params)
查看文档https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-executemany.html