使用 pyodbc 将数字插入 table
insert numbers into table using pyodbc
我正在尝试使用 executemany
函数将一系列数字插入到 SQL 服务器数据库中。我的输入将是一个数字列表,从几百到 10k 行不等。
cursor = cnxn.cursor()
sql = 'CREATE TABLE [dbo].[#numbers] ([number] int not null)'
cursor.execute(sql)
cursor.commit()
sql = 'INSERT INTO [dbo].[#numbers] (number) values (?)'
l = list(range(1, 10))
cursor.executemany(sql,l)
TypeError: ('Params must be in a list, tuple, or Row', 'HY000')
我猜我需要将我的整数列表转换为列表或元组列表,这似乎是我真正在努力解决的问题。
就像错误所说的那样:params should be in a list, tuple or Row.
您正在尝试插入 1, 2, 3, 4, ...
,它是 单个 值的列表。
你想要的是为每一行插入一个 list 值,这意味着:
[[1], [2], [3], [4], ...]
因此,如果您将 l
更改为:
l = [[i] for i in range(1, 10)]
那么应该可以了。
我正在尝试使用 executemany
函数将一系列数字插入到 SQL 服务器数据库中。我的输入将是一个数字列表,从几百到 10k 行不等。
cursor = cnxn.cursor()
sql = 'CREATE TABLE [dbo].[#numbers] ([number] int not null)'
cursor.execute(sql)
cursor.commit()
sql = 'INSERT INTO [dbo].[#numbers] (number) values (?)'
l = list(range(1, 10))
cursor.executemany(sql,l)
TypeError: ('Params must be in a list, tuple, or Row', 'HY000')
我猜我需要将我的整数列表转换为列表或元组列表,这似乎是我真正在努力解决的问题。
就像错误所说的那样:params should be in a list, tuple or Row.
您正在尝试插入 1, 2, 3, 4, ...
,它是 单个 值的列表。
你想要的是为每一行插入一个 list 值,这意味着:
[[1], [2], [3], [4], ...]
因此,如果您将 l
更改为:
l = [[i] for i in range(1, 10)]
那么应该可以了。