【发布时间】:2018-02-08 17:37:27
【问题描述】:
我一直在使用 pyodbc 连接本地 Access 数据库(.accdb 文件),但如果我尝试输入的字符串超过 255 个字符,则无法更新长文本字段。字段(Description)的数据类型是Long Text,Text Format是Rich 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 Driver]无效的精度值 (98) (SQLBindParameter)')
我尝试直接在数据库中更改字段属性。我也尝试直接在 Acces 中插入超过 255 个字符的字符串,并且能够这样做。
我一直在寻找解决问题的方法,我认为这与绑定参数有关,尽管我对此主题了解不多。我在这里留下一个链接,我相信它可能与问题有关:https://github.com/mkleehammer/pyodbc/wiki/Binding-Parameters
如有任何帮助可以使用大字符串更新字段,我们将不胜感激。
【问题讨论】:
-
听起来您使用的是 pyodbc 4.0.22,它有几个已知问题。尝试降级到 pyodbc 4.0.21 看看是否有帮助。 (它对我有用。)
-
它也对我有用,非常感谢!
标签: python python-3.x ms-access pyodbc ms-access-2016