【问题标题】:pymysql update not workingpymysql更新不起作用
【发布时间】:2016-03-17 07:40:18
【问题描述】:

我需要进行更新,所以我做了这个,但我遇到了这段代码的问题。

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 编写代码,所以请保持良好状态:)

【问题讨论】:

    标签: python python-2.7 pymysql


    【解决方案1】:

    请打印您的 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

    【讨论】:

    • 哇,这么快。这对您的代码和链接都有帮助。它现在完美无缺。 numTweets 是一个字典,顺便说一句。谢谢!
    猜你喜欢
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2010-10-03
    • 2016-08-04
    • 2015-08-24
    相关资源
    最近更新 更多