无法使用pyodbc

时间:2018-02-08 17:37:28

标签: python python-3.x ms-access pyodbc ms-access-2016

我一直在使用pyodbc连接本地Access数据库(.accdb文件),但是如果我尝试输入的字符串超过255个字符,则无法更新Long Text字段。字段(描述)的数据类型是长文本,文本格式是富文本。

代码:

import pyodbc
pyodbc.pooling = False

conn_str = (
    r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
    r'DBQ=C:\...\...\...\...\database.accdb;'
    )
cnxn = pyodbc.connect(conn_str)
crsr = cnxn.cursor()

temp_desc = complex_descricao(comp_idx, "T_Compound", crsr, cnxn) #Function produces large string (> 255 characters)

#temp_desc = temp_desc[:255]   # Filter I have used to test the maximum number of characters allowed

crsr.execute("UPDATE T_Compound SET Description = ? WHERE ID_Comp = ?", temp_desc, comp_idx)
cnxn.commit()

这会产生以下错误:

  

错误:(' HY104',' [HY104] [Microsoft] [ODBC Microsoft Access   驱动程序]无效的精度值(98)(SQLBindParameter)')

我试图直接在数据库中更改字段属性。我还尝试在Acces中直接插入超过255个字符的字符串,并且能够这样做。

我已经找到了修复问题的方法,我认为这与绑定参数有关,尽管我对这个主题知之甚少。我在此留下一个链接,我相信它可能与此问题有关:https://github.com/mkleehammer/pyodbc/wiki/Binding-Parameters

任何有助于用大字符串更新字段的帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

您在pyodbc 4.0.22中遇到过回归。它正在调查中(多个GitHub问题C# online demo)并且应该在未来的pyodbc版本中修复。在此期间,只需恢复到pyodbc 4.0.21:

pip install pyodbc==4.0.21