gpt4 book ai didi

python - MySQL, python 更新行如果为空

转载 作者:行者123 更新时间:2023-11-28 23:56:18 24 4
gpt4 key购买 nike

我有一个包含 7 个字段的数据库,字段 1 是唯一的,其余的不是。但是字段 2 和 3 可以为空。我正在尝试使用 csv 文件中的信息更新数据库以填充空值,但我无法让它工作。该字段可以为空,或者该字段可能已经包含信息。

db=mdb.connect('localhost','username','password','db')
cur=db.cursor()
inputinfo=csv.reader(open('Insert.csv','r'),delimiter=',')
for row in inputinfo:
inserthostNames=("""update fileSort set hostNames=values(hostNames) where hostNames is not null""")
cur.execute(inserthostNames,row[1])
insertIPAddress=("""update fileSort set IPAddress=values(IPAddress) where IPAddress is not null""")

它不起作用并给我错误

Traceback (most recent call last):
File "test.py", line 57, in <module>
insertTADDM()
File "test.py", line 47, in insertTADDM
cur.execute(inserthostNames,row[1])
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 159, in execute
query = query % db.literal(args)
TypeError: not all arguments converted during string formatting

编辑1:

for row in inputinfo:
inserthostNames=("""update fileSort set hostNames=hostNames where hostNames is null""",row)
cur.execute(inserthostNames,row[1])
insertIPAddress=("""update fileSort set IPAddress=IPAddress where IPAddress is null""",row)
cur.execute(insertIPAddress,row[2])

这给出了错误:

TypeError: unsupported operand type(s) for %: 'tuple' and 'str'

编辑 2:

for row in inputinfo:
inserthostNames=("""update fileSort set hostNames='%s' where hostNames is null""")
cur.execute(inserthostNames,(db.escape_string(row[1])))
#insertIPAddress=("""update fileSort set IPAddress='%s' where IPAddress is null""")
#cur.execute(insertIPAddress,row[2])
db.commit()

给我:

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SERVER2'' where hostNames is null' at line 1")

撇号返回

最佳答案

您的execute 函数包含一个参数row[1] 但在您的查询字符串中没有替换的位置。此外,参数必须作为序列传递。此外,如果要填充空值,则 where 条件应为 where hostNames is null

此外,由于 hostNames 可能包含特殊字符,您可能希望使用 conn.escape_string 将其转义

您可能希望将查询更改为:

inserthostNames=("""update fileSort set hostNames='%s' where hostNames is null""")
cur.execute(inserthostNames,(db.escape_string(row[1])))

关于python - MySQL, python 更新行如果为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31592549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com