MySQL вставка переменной из Jython - PullRequest
0 голосов
/ 23 марта 2011

Я пытаюсь вставить переменную в mysql из jython и получаю странные ошибки

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 голосов
/ 23 марта 2011

Измените (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'
...