Python Mysql更新执行命令

2024-10-04 03:21:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图对代码列等于“code”的行执行以下命令,设置“store”=“result”。在

cursor.execute("""UPDATE pjStores SET %s=%s WHERE code=%s""", (store, result, code))

但我一直收到以下错误:

^{pr2}$

其中命令中的变量是:

store=1087
result=1
code=Madness16

这是我第一次真正使用mysql,所以我对它还很陌生。我已经被困在这条线上2个小时了,不知道我做错了什么。我在mysql中尝试了以下命令,运行正常:

UPDATE pjStores SET `1087`=1 WHERE code='Madness16'

需要更多代码:

# Step through stores
cursor.execute("SHOW COLUMNS FROM pjStores")
stores = cursor.fetchall()
cursor.execute("SELECT code FROM pjStores")
codes = cursor.fetchall()

for store in stores[1:]:    # Hack to skip first entry
    pj.setStore(store[0])
    for code in codes:
        result = pj.checkCode(code[0])
        cursor.execute ("""UPDATE pjStores SET %d=%s WHERE code=%s""", (store[0],     result, code[0]))

Tags: store代码from命令executemysqlcodeupdate
2条回答

尝试使用'而不是"

cursor.execute('''UPDATE pjStores SET %s=%s WHERE code=%s''', (store, result, code))

您可能需要尝试类似的方法(假设这不容易受到sql注入攻击—这意味着数据是可信的,而不是用户提供的)

...
for code in code:
    result = pj.checkCode(code[0])
    query = """UPDATE pjStores SET `%s` = %%s WHERE `code` = %%s""" % store[0]
    cursor.execute(query, (result, code[0]))

相关问题 更多 >