2
我正在使用pyodbc与传统Access 2000 .mdb文件进行通信。使用pyodbc将行插入到MS Access MDB中,如何转义参数?
我有一个光标,我试图执行此:
c.execute("INSERT INTO [Accounts] ([Name], [TypeID], [StatusID], [AccountCat], [id]) VALUES (?, ?, ?, ?, ?)", [u'test', 20, 10, 4, 2])
然而,这样做的结果
pyodbc.Error: ('HYC00', '[HYC00] [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented (106) (SQLBindParameter)')
我明白,我可以简单地改变问号字面值,但根据我的经验,在数据库中正确地转义字符串不是很好。
PHP和mysql合作让mysql_real_escape_string
和朋友们,但我似乎无法找到pyodbc的函数逃逸值。
如果你能让我知道插入这些数据的推荐方式(来自python)是什么,那会非常有帮助。另外,如果你有一个Python函数来转义odbc字符串,那也会很棒。
Python长数据类型的定义是什么?如果它超过了Jet长整型的容量,那就是为什么你不能使用它。如果这是问题的原因,那么对我而言,这看起来像是飞行员错误,即,您试图在没有完全理解目标数据库的数据类型的情况下执行某些操作。 – 2010-04-27 00:42:38
在Python中,多头具有任意的容量。 Python会在必要时透明地将int提升为long,但它不会自动降级(所以int(24)是一个整数,long(24)是一个整数,但int(2400000000)和long(2400000000)都是long)。因此,Python程序员不知道他们的程序是使用longs,ints还是两者的混合,这是完全合理的。如果pyodbc在范围内,接受它们并不是不合理的。 – 2010-05-24 21:02:06