从Jython插入变量到MySQL
我正在尝试通过jython把一个变量插入到mysql数据库中,但遇到了一些奇怪的错误。
var1='abc'
cursor.execute (""" INSERT INTO Master (Name) VALUES (%s) """, (var1))
我收到一个错误信息:zxJDBC.ProgrammingError: optional second argument must be a list or tuple
。我只是想把一个变量添加到一个叫做Master的表里,列名是'Name'。我觉得自己很聪明,就把var1改成了var1=['abc']
。
结果我又遇到了一个错误:zxJDBC.Error: error setting index [1] [SQLCode: 0] Parameter index out of range (1 > number of parameters, which is 0). [SQLCode: 0], [SQLState: S1009]
。
我尝试在插入时使用var1[0],但还是没用。我还试过其他方法,比如在我的插入语句后面加上..VALUES (%s) """, % var1,但也不行。
抱歉打扰你,我觉得这应该很简单。我不确定这是否有影响,但我在看python的文档,因为我找不到关于jython mysql的资料。
1 个回答
3
把 (var1) 改成 (var1,)。括号是用来分组的,除非你加一个逗号,这样就表示这是一个元组。
另外,检查一下参数的格式,因为它可能没有识别 %s 这种格式。根据 PEP 249 的规定:
paramstyle
String constant stating the type of parameter marker
formatting expected by the interface. Possible values are:
'qmark' Question mark style,
e.g. '...WHERE name=?'
'numeric' Numeric, positional style,
e.g. '...WHERE name=:1'
'named' Named style,
e.g. '...WHERE name=:name'
'format' ANSI C printf format codes,
e.g. '...WHERE name=%s'
'pyformat' Python extended format codes,
e.g. '...WHERE name=%(name)s'