我试图从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上找不到太多。
答案 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'