Python - 如何在 SQL Server 上添加新列并插入列表行

标签 python sql-server python-3.x insert

我想从 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/

相关文章:

python - 如果没有办法在 pandas read_csv 中设置超时,该怎么办?

python - 从 BeautifulSoup 结果中获取表单 "action"

python - 删除python中to_excel中的列名

SQL查询组和有

python - PyQt 不更新标签

sql - 使用表作为 sp_execute_remote(Azure SQL 数据库)的输入参数

sql - 选择基于员工的可用性查询 SQL Server 2012

arrays - 在python中将stdin行转换为 "float/int"数组的更简单方法

python - Python中对数计算的底数会影响速度吗?

python-3.x - 如果 Feather 文件格式仍然相关,或者社区是否倾向于使用其他文件格式来存储大文件?