从Jython插入变量到MySQL

0 投票
1 回答
743 浏览
提问于 2025-04-16 14:14

我正在尝试通过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'

撰写回答