0

我有一个 SQL Server 2017 数据库表,其中包含 10,000 多条记录,其中一EmailAddress列需要为表中的每一行更新 1(即a+1@email.coma+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 中的“无效语法”

4

0 回答 0