Python错误更新SQL DB

时间:2017-05-31 08:43:31

标签: python ms-access pypyodbc

我有一些看起来像这样的python代码

import pypyodbc
import pandas as pd
home="c:/SQL/"
df = pd.read_sql_query(sql4, conn3
for y1 in range(0 , k):
    ARCHIVE_SERNUM = (df['sernum']).iloc[y1]
    KQL=len(KIC53_QUERY_LIST)
    FOUND=False
    for y2 in range(0,KQL):
        if ARCHIVE_SERNUM == KIC53_QUERY_LIST[y2]:
            FOUND=True
            #do something then
            break
    if FOUND == False:
        print(FOUND,ARCHIVE_SERNUM,"This is STIME : ",STIME)
        CTIME=STIME
        cursor = conn3.cursor()
        cursor.execute("""
            UPDATE ENCOMPASS_DIA
            SET CTIME=%s
            WHERE SERNUM=ARCHIVE_SERNUM
            """, (STIME))

它抛出一个错误,我无法弄清楚发生了什么。 在此示例中,CTIME和STIME都等于相同的17个字符串。

File "c:/SQL/ConnectionTest8.py", line 212, in <module>
""", (STIME))

TypeError: Params must be in a list, tuple, or Row

2 个答案:

答案 0 :(得分:1)

一个容易犯的错误。

 cursor.execute("""
        UPDATE ENCOMPASS_DIA
        SET CTIME=%s
        WHERE SERNUM=ARCHIVE_SERNUM
        """, (STIME, ))

,或(STIME)被解释为列表而不是元组后,应该有一个尾随STIME

答案 1 :(得分:1)

在这种情况下,正确的Update语句是:

cursor.execute("""UPDATE ENCOMPASS_DIA SET CTIME=? WHERE SERNUM=?""", (SSTIME,ARCHIVE_SERNUM ))