对要插入数据库的 python 数据类型感到困惑

Confused about python data types to insert into database

我正在尝试将此值插入 SQL 服务器 table,但我不确定这应该是列表还是字典。

在某些情况下,我使用 shareplum 和类似这样的代码从 Sharepoint 列表中提取数据

import json
import pandas
import pyodbc 
from shareplum import Site
from shareplum import Office365

authcookie = Office365('https://company.sharepoint.com', username='username', password='password').GetCookies()
site = Site('https://company.sharepoint.com/sites/sharepoint/', authcookie=authcookie)
sp_list = site.List('Test')
data = sp_list.GetListItems('All Items')

cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
                      "Server=Server;"
                      "Database=db;"
                      "Trusted_Connection=yes;")

cursor = cnxn.cursor()
insert_query = "INSERT INTO SharepointTest(No,Name) VALUES (%(No)s,%(Name)s)"
cursor.executemany(insert_query,data)
cnxn.commit

这是我使用 print(data)

时的结果
[
    { 'No': '1', 'Name': 'Qwe' }, 
    { 'No': '2', 'Name': 'Asd' }, 
    { 'No': '3', 'Name': 'Zxc' }, 
    { 'No': '10', 'Name': 'jkl' }
]

如果我尝试执行该代码,将显示此消息

TypeError: ('Params must be in a list, tuple, or Row', 'HY000')

我应该在代码中修复什么?

将您的字典列表转换为字典值的列表或元组。

我在下面使用列表理解来遍历列表并使用 values() 方法从字典中提取值

insert_query = "INSERT INTO SharepointTest(No,Name) VALUES (?, ?)" #change your sql statement to include parameter markers 
cursor.executemany(insert_query, [tuple(d.values()) for d in data])
cnxn.commit() #finally commit your changes