我想从 python 向 SQL Server 插入值。这是我的代码:
for value in rows:
cursor.execute ("""INSERT INTO Table ([ColumnOne]) VALUES (?)""", value)
cnxn.commit()
在 rows
中,它包含行列表(迭代),如下所示:
第 1 行包含 float 列表
1.0 2.0 1.5 1.75
.....(一行/列总共1000个值), 对于 row2、row3 等也是如此。 但是,当我尝试运行代码时,出现此错误
pyodbc.ProgrammingError: ('The SQL contains 1 parameter markers, but 1000 parameters were supplied', 'HY000')
有什么方法可以使浮点值不被单独处理或解决这个问题?
我想也许我应该使用 ','.join
语句将其设置为字符串?
考虑到我不太擅长解释并且是Python新手,如果我有一些错误,请纠正我。谢谢。
最佳答案
当您尝试在一个查询中插入多个表行时,您需要为每一行提供一个值列表。
例如,以下查询将插入两行:
INSERT INTO Table (ColumnOne) VALUES (1.0), (2.0);
因此,您的 Python 代码需要准备查询的正确 VALUES
部分:
for row in rows:
values = ", ".join(("(?)",) * len(row))
cursor.execute(f"INSERT INTO Table (ColumnOne) VALUES {values}", row)
关于Python - 如何在 SQL Server 上添加新列并插入列表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55251798/