带有 %s 的 Pymysql UPDATE 出现未知错误

Pymysql UPDATE with %s rises unknown error

我尝试用 pymysql 更新我的 sql 数据库中的一行。为了使整个事情更像 pythonic,我定义了变量和位置以使用 %s 进行更新。 这对一个变量有效,但是另一个变量正在上升一个我不明白的错误。 这是我的代码:

with connection.cursor() as cursor:
    #sql = "update tf_data set doi=\'"+str(DOI)+"\' where tf_data_id="+str(tf_data_id)+";"
    sql = "update tf_data set doi=%(DOI)s where tf_data_id=%(data_id)s"
    DOI=DOI
    data_id = str(tf_data_id)
    cursor.execute(sql)

连接已在脚本开头定义,并且已经生效。 变量是:

DOI= '10.1371/journal.pone.0151666'

tf_data_id = 1
如果我执行,我认为该命令应该在 mysql 中直接执行:

update tf_data set doi='10.1371/journal.pone.0151666' where tf_data_id='1';

谁能告诉我,这是什么问题?

你只需要

sql = "update tf_data set doi='%s' where tf_data_id='%s'" % (str(DOI), str(tf_data_id))

或者您可以使用 format() 方法

sql = "update tf_data set doi='{DOI}' where tf_data_id='{data_id}'".format(DOI=DOI, data_id= tf_data_id)