使用pyodbc-Python更新Microsoft SQL表上的字段
我有一个sql表,其中包含以下数据:使用pyodbc-Python更新Microsoft SQL表上的字段,python,sql,Python,Sql,我有一个sql表,其中包含以下数据: name location sarah dave bob rover dave bob emma john prash 我收到了一些数据,这些数据提供了所有这些人的详细位置。地点可以是: name_data location_data sarah GB dave US bob FR rover IN dave US bob
name location
sarah
dave
bob
rover
dave
bob
emma
john
prash
我收到了一些数据,这些数据提供了所有这些人的详细位置。地点可以是:
name_data location_data
sarah GB
dave US
bob FR
rover IN
dave US
bob FR
emma ES
john NI
如何更新数据库,以便包含与名称相关的位置?我尝试了以下方法,但似乎不起作用:
cursor.execute("UPDATE "+table_name+"location) values (?)",location_data"WHERE name like" "'"name_data"'")
如果将名称/位置数据打包到元组列表中:
for name, location in name_location_data:
sql = "UPDATE {tbl} SET location=? WHERE name=?".format(tbl=table_name)
cursor.execute(sql, name, location)
我认为字符串的“(?)”表示在更新表时不起作用。我建议您使用“%s”并设置。它应该是这样的:
cursor.execute("UPDATE table_name SET location='%s' WHERE name='%s'" % (location_data, name_data))
根据
(?)
判断,我猜这使用了sqlite语法?这是一个严重扭曲的字符串,你正试图建立。如果table\u name
需要是动态的,那么可以将其分为两部分;首先构建一个query=
字符串,在该字符串中,您使用%s
来表示不能由(?)
表示的部分,然后执行查询字符串,并在执行阶段添加占位符覆盖的值。您实际上可以将“?”与更新一起使用-
name=input("Enter name:")
loc = input("Enter Location:")
cursor = cnxn.cursor()
SQLCommand = ("UPDATE {table_name} SET location_data=? WHERE name_data ="+ name+" ")
Location = [loc]
cursor.execute(SQLCommand,Location)