【问题标题】:Unable to insert multiple rows to sql table from python无法从python向sql表插入多行
【发布时间】:2021-12-07 09:12:31
【问题描述】:

即使我将列表作为参数传递,我在执行查询时也会收到以下错误

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

我正在尝试使用 executemany 将多行传递给 sql 表

请在下面找到我的代码并提供帮助,我是 python 新手。

query = """INSERT INTO TableTest (Summary) Values (%s)"""
val = [('SPHXNORF2ASW1'),('CHNSIRSDB1USAA'),('NKOLGTPRAVPNVM'),('STAMHO3WANCEG'),('SPHXNORWANCEG1'),('SPHXNORWANCE'),('STAMHO3WANCEG')]
       
     
                 
      
cursor = conn.cursor()

cursor.executemany(query,val)

conn.commit()   ```

【问题讨论】:

    标签: python sql sql-insert pyodbc


    【解决方案1】:

    在 python 中,将值放入 '()' 不会使其成为元组。 所以,这段代码

    val = [('SPHXNORF2ASW1'),('CHNSIRSDB1USAA'),('NKOLGTPRAVPNVM'),('STAMHO3WANCEG'),('SPHXNORWANCEG1'),('SPHXNORWANCE'),('STAMHO3WANCEG')]
        
    

    将转换为

    ['SPHXNORF2ASW1', 'CHNSIRSDB1USAA', 'NKOLGTPRAVPNVM', 'STAMHO3WANCEG', 'SPHXNORWANCEG1', 'SPHXNORWANCE', 'STAMHO3WANCEG']
    

    如果您想将其指定为元组,请添加如下尾随逗号或使用'[]' 代替元组。

    用途:

    val = [('SPHXNORF2ASW1',),('CHNSIRSDB1USAA',),('NKOLGTPRAVPNVM',),('STAMHO3WANCEG',),('SPHXNORWANCEG1',),('SPHXNORWANCE',),('STAMHO3WANCEG',)]
    

    或者:

    [ ['SPHXNORF2ASW1'], ['CHNSIRSDB1USAA'], ['NKOLGTPRAVPNVM'], ['STAMHO3WANCEG'], ['SPHXNORWANCEG1'], ['SPHXNORWANCE'], ['STAMHO3WANCEG']]
    

    【讨论】:

    • 非常感谢您分享您获得的知识,它对我有用。
    • 很高兴知道它对您有所帮助。如果问题得到解决,您可以接受它作为答案
    猜你喜欢
    • 2012-07-07
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多