使用pyodb将列表插入odbc行的优雅方法

2024-06-08 14:14:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学习python和SQL。我可以连接到我的数据库,并从中查询。现在我想插入行。特别是,我有一本列表字典。我想将每个列表作为行的一部分插入数据库。因为我的单子很长,我想找一个优雅的方法来做。

表的定义如下:

CREATE TABLE [dbo].[ExampleTable](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Date] [date] NOT NULL,
    [Name] [nvarchar](50) NOT NULL,
    [columnA] [nvarchar](50) NULL,
    [columnB] [int] NOT NULL,
    [columnC] [decimal](5, 4) NOT NULL,
    [columnD] [int] NOT NULL
    ...
    [columnX] [nvarchar](50) NOT NULL
)

到目前为止我有:

import pyodbc
import datetime
import time

cnxn = pyodbc.connect(connStr)
db_cursor = cnxn.cursor()

myDict = dict()
myDict['key1'] = ['John Doe', 5, 0.978, -1, ..., 'x'] # there are many columns here
thisDate =  datetime.date(2014, 10, 22)
myTable = ExampleTable

insertQuery  = "insert into %s value(?, ?, ?)" %myTable


for key in myDict:
    db_cursor.execute(insertQuery, key, thisDate.strftime('%Y-%m-%d'), myDict[key])
    cnxn.commit()

这里我得到一个错误:

ProgrammingError: ('Invalid parameter type. param-index=4 param-type=list', 'HY105')

有没有一种方法可以做到优雅,而不必引用字典列表中的每个元素?

谢谢!


Tags: 方法keyimport数据库列表date字典not