我有一个 SQL Server 2017 数据库表,其中包含 10,000 多条记录,其中一EmailAddress
列需要为表中的每一行更新 1(即a+1@email.com
,a+2@email.com
最多a+10000@email.com
)。
我认为最简单的方法是使用 Pythonpypyodbc
SQLCommand
和 for 循环。此外,SQL 命令中的 SET 值需要从xlsx
文件中检索,使用xlrd
该文件将遍历每一行并更新 SET 的值。
除了在网上搜索答案之外,我还尝试了许多不同的方式来更改代码,但似乎无法找到这个问题的答案。
import pypyodbc
import xlrd
connection = pypyodbc.connect('Driver=SQL Server;'
'Server=DESKTOP-YourMomsServer\SQLEXPRESS;'
'Database=testtime;'
'Trusted_Connection=yes;'
)
cursor = connection.cursor()
xlf = xlrd.open_workbook("testdatafile.xlsx")
sh = xlf.sheet_by_name("Sheet1")
SQLCommand = ("SELECT * FROM anothertest")
cursor.execute(SQLCommand)
for val in cursor:
a, b = val
for i in range(sh.nrows):
c, d = sh.row_values(i)
SQLCommmand = ("UPDATE anothertest SET test =" d "WHERE "c = a)
cursor.execute(SQLCommand)
#print(a,b)
connection.commit()
connection.close()
预期的结果是脚本将遍历从第 1 行开始直到最后一行第 10000 行的整个结果集,并更新EmailAddress
从 xlsx 文件中读取的列。
错误
SQLCommand 中的“无效语法”