【问题标题】:How to insert data into unique identifier column into SQL Server using pyodbc如何使用 pyodbc 将数据插入到 SQL Server 的唯一标识符列中
【发布时间】:2021-03-29 18:49:13
【问题描述】:

我有一个表,其中有一列类型为uniqueidentifier。如何使用 pyodbc 将数据插入 uid 列?

我正在尝试这段代码:

 cursor.execute("""
                   Insert into tablename (col1,col2)
                   values (?,?)
                """, 
               '67E616B4-7DBC-6D14-B0BA-0F7DE2F94AEE',
               '2E92D02D-B7DA-4DED-9816-26B2CF867FA2' )

col1col2 的类型为 uniqueidentifier

我收到此错误:

pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]从字符串转换为唯一标识符时转换失败。(8169) (SQLExecDirectW)')

【问题讨论】:

  • this 回答你的问题了吗?
  • 我如何使用 python 做到这一点?
  • 我想知道是否有任何python库来处理这种情况?我使用了 UUID 库,但这并没有多大帮助。
  • 我能够使用 pyobc 4.0.30、Python 3.7.1 和 ODBC Driver 17 插入这些值。我想知道问题是否是由于 SQL Server 中的配置造成的?您可以尝试创建一个新表并将它们插入其中吗?
  • 我使用 python 3.6。可以分享一下代码吗?

标签: python sql-server python-3.x pandas pypyodbc


【解决方案1】:

您可以使用fast_to_sql,这是一种将 pandas 数据帧上传到 Microsoft SQL Server 的改进方法,例如

df = pd.DataFrame({
"col1": ['67E616B4-7DBC-6D14-B0BA-0F7DE2F94AEE'],
"col2": ['2E92D02D-B7DA-4DED-9816-26B2CF867FA2']
})
    
 fts.fast_to_sql(df, "tablename", conn, if_exists="append", custom=None, temp=False)

append 选项代表向表中插入新值

【讨论】:

  • 谢谢!但这适用于 python 3.8+。我只有 python 3.6。由于某些原因,我无法升级到 3.8。有替代方案吗?
  • df.to_sql('tablename', con=conn, if_exists='append', index=False ) 可能是另一个选择@MerajHussain
猜你喜欢
  • 1970-01-01
  • 2019-12-27
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2013-06-20
相关资源
最近更新 更多