mysql从jython插入变量

时间:2011-03-22 23:53:06

标签: python mysql jython

我试图从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 个答案:

答案 0 :(得分: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'