【问题标题】:How to I make my insert statement in multiple lines?如何在多行中创建我的插入语句?
【发布时间】:2019-10-04 05:19:15
【问题描述】:

我正在尝试执行一个插入查询,当我将它写在一行中时它正在工作。

我想分成多行以使我的代码可读 This code isn't working when split into lines

cursor.execute('''INSERT INTO dbo.SEGMENT_PROSPECTS([SEG_CATEGORY],[SEG_SUB_CATEGORY],[CUSTOMER_CNIC],
        [CUSTOMER_NAME],[CUSTOMER_MOBILE],[CUSTOMER_EMAIL],[CUSTOMER_GENDER],[CREATED_ON],[UPDATED_ON],[CREATED_BY],
        [UPDATED_BY]), values (?,?,?,?,?,?,?,?,?,?,?)''', row['SEG_CATEGORY'],row['SEG_SUB_CATEGORY'],row['RELATIONSHIP_NUM'],
        row['MOBILE_PHONE'],row['PRIMARY_EMAIL'],row['FULL_NAME'],row['GENDER_CODE'],row['CREATED_ON'],row['UPDATED_ON'],row['CREATED_BY'],
        row['UPDATED_BY'])

【问题讨论】:

  • 错误提示:[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]','附近的语法不正确
  • 删除VALUES前面的逗号。它不属于那里。否则,您的代码看起来可以正常工作。

标签: sql python-3.x pyodbc


【解决方案1】:

我假设您的数据是熊猫数据框?最好将其转换为 dict,然后将值作为列表传递。

假设您的实际 df 中有更多列,您可以复制而无需完全更改/删除它。

new_row = row[['SEG_CATEGORY', 'SEG_SUB_CATEGORY', 'RELATIONSHIP_NUM', 'MOBILE_PHONE', 'PRIMARY_EMAIL', 'FULL_NAME', 'GENDER_CODE', 'CREATED_ON', 'UPDATED_ON', 'CREATED_BY', 'UPDATED_BY']].copy()

cursor.execute('''INSERT INTO dbo.SEGMENT_PROSPECTS([SEG_CATEGORY],[SEG_SUB_CATEGORY],[CUSTOMER_CNIC],
        [CUSTOMER_NAME],[CUSTOMER_MOBILE],[CUSTOMER_EMAIL],[CUSTOMER_GENDER],[CREATED_ON],[UPDATED_ON],[CREATED_BY],
        [UPDATED_BY]), values (?,?,?,?,?,?,?,?,?,?,?)''', new_row.values.tolist())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 2023-03-11
    • 2020-10-10
    • 2014-10-21
    • 2015-10-25
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多