尝试通过Python脚本更新Informix表时,我收到错误:
Character to numeric conversion error (-1213)
db请求:
cursor.execute("update sales set pid = ? where sid = '1'", price)
表销售:
sid | oid | price | pid
我要更新的列的数据类型为money(10,2)
我尝试将一个字符串和一个浮点数作为十进制值插入...哪个适合?
我在Win 2003 Server上使用Informix 10.00 TC6 -
CLIENT_LOCALE=en_us.819 - DB_LOCALE=en_us.819
要连接到Informix,我使用的是pyodbc。
支持的数据类型中没有关于资金的内容,因此不确定它是否有效(http://code.google.com/p/pyodbc/wiki/DataTypes)
答案 0 :(得分:1)
您的数据库驱动程序正在将您的代码转换为SQL。您可以使用Informix调试器来查看它生成的SQL。我知道Informix在其SQL中不喜欢千位分隔符。
答案 1 :(得分:0)
您显示的SQL中有两种可能的字符串到数字转换。
'1'
转换为与sid
相同的类型。price
代替?
)。 price
的价值是多少? Python打印它的价值是什么?
Informix非常灵活地为您进行转换,因此第一次转换应该没问题。通常情况下,如果sid
是字符串列,则只提供单引号,但它应该转换为正常。
所以,另一个问题是:PyODBC对price
做了什么?
如果设置环境变量SQLIDEBUG=2:xyz
并运行程序,您可能会看到会发生什么。它将生成一个前缀为xyz_
的文件,可以使用sqliprint
进行处理,假设它可供您使用。这将告诉您客户端(Python)和数据服务器之间发送了什么。根据您找到的内容,它可能会指向客户端代码或服务器端代码。