使用pyodbc-Python更新Microsoft 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

我有一个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            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)