Python 更新 SQL 数据库时出错
Python error updating a SQL DB
我有一些 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
一个很容易犯的错误。
cursor.execute("""
UPDATE ENCOMPASS_DIA
SET CTIME=%s
WHERE SERNUM=ARCHIVE_SERNUM
""", (STIME, ))
在 STIME
或 (STIME) 之后应该有尾随 ,
将被解释为列表而不是元组。
在这种情况下,正确的更新语句是:
cursor.execute("""UPDATE ENCOMPASS_DIA SET CTIME=? WHERE SERNUM=?""", (SSTIME,ARCHIVE_SERNUM ))
我有一些 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
一个很容易犯的错误。
cursor.execute("""
UPDATE ENCOMPASS_DIA
SET CTIME=%s
WHERE SERNUM=ARCHIVE_SERNUM
""", (STIME, ))
在 STIME
或 (STIME) 之后应该有尾随 ,
将被解释为列表而不是元组。
在这种情况下,正确的更新语句是:
cursor.execute("""UPDATE ENCOMPASS_DIA SET CTIME=? WHERE SERNUM=?""", (SSTIME,ARCHIVE_SERNUM ))