【问题标题】:How to pass list data into insert statement in SQL server using python?如何使用 python 将列表数据传递到 SQL Server 中的插入语句?
【发布时间】:2023-01-02 20:42:04
【问题描述】:

我是 python 的新手,正在创建一个 python 应用程序来将数据插入到 SQL 服务器表中。我正在通过以下方式尝试它,但它给了我一个错误。

这是我的代码

import pyodbc

conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=.\SQLEXPRESS;'
                      'Database=company_mine;'
                      'Trusted_Connection=yes;')

datalist = ['KFC', ' kfc', '71 Tottenham Ct Rd', 'London', 'null', 'null', 'London']

sql_insert_query1 = """INSERT INTO company_details(company_name,contact_name,mailing_street,mailing_city,mailing_state,mailing_postal_code,mailing_country)VALUES(%s)"""

cursor1 = conn.cursor()
cursor1.executemany(sql_insert_query1, datalist)
conn.commit()
print(cursor1.rowcount, "Record inserted successfully")

请帮我解决这个问题。

【问题讨论】:

    标签: python list


    【解决方案1】:

    您似乎只想在表中插入一行。在这种情况下,请尝试更换该行

    cursor1.executemany(sql_insert_query1, datalist)
    

    cursor1.execute(sql_insert_query1, datalist)
    

    cursor1.executemany 期望得到一个值列表列表,并将对列表列表中的每个列表执行一次给它的语句。例如,如果您要插入两行,您的datalist 变量可能如下所示(我已经为第二行编写了详细信息):

    datalist = [
        ['KFC', ' kfc', '71 Tottenham Ct Rd', 'London', 'null', 'null', 'London'],
        ['LGN', ' lgn', '72 High Street', 'Birmingham', 'null', 'null', 'Birmingham']
    ]
    

    如果将其传递给cursor.executemany,它将运行两个INSERT语句,一个使用datalist中第一个列表中的值,一个使用第二个列表中的值。


    我注意到您的代码还有另外几个问题。首先,sql_insert_query1中的SQL语句只包含一个%s占位符。每列都需要一个。您有七列,因此将 VALUES(%s) 替换为 VALUES(%s,%s,%s,%s,%s,%s,%s)

    另外,我注意到您正试图将字符串 'null' 插入到上述某些列中。这不会插入 SQL NULL 值,相反,它会将文本 null 插入到您可能不需要的该列中。使用 Python None 值表示 SQL NULL 值。

    【讨论】:

    • 太感谢了。我会尝试这些步骤。
    猜你喜欢
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 2012-02-22
    • 2021-04-01
    相关资源
    最近更新 更多