我一直在使用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
任何有助于用大字符串更新字段的帮助都将受到赞赏。
答案 0 :(得分:0)
您在pyodbc 4.0.22中遇到过回归。它正在调查中(多个GitHub问题C# online demo)并且应该在未来的pyodbc版本中修复。在此期间,只需恢复到pyodbc 4.0.21:
pip install pyodbc==4.0.21