2017-05-20 1 views
1

Ich habe folgende Code geschriebenen Daten in Ingite Cache aus Python einzufügen ODBC-Treiber. Dabei will Arraylist von Strings (ID_LIST) als Argument übergeben. Meine Liste enthält variable Anzahl von Elementen, die ist, warum ich es als Argument übergeben müssen abzufragen.Fehler beim Array als Argument übergeben von Daten in Cache-Entzünden INSERT Pyodbc Verwendung

cursor = connection.cursor() 
select_string= "INSERT INTO Person (_key, id, firstName, lastName, salary) VALUES (322, ? , 'abcd', 'dhsagd', 1000)" 

id_list = ['test1', 'test2', 'test3', 'test4'] 
cursor.execute(select_string, id_list) 

Aber wenn ich Liste der Zeichenfolgen als Parameter zur Abfrage übergeben bekomme ich folgenden Fehler.

Traceback (most recent call last): 
    File "pythonOdbclist.py", line 13, in <module> 
    cursor.execute(select_string, id_list) 
pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 4 parameters were supplied', 'HY000') 

Antwort

0

Gemäß der Dokumentation, Parameter sollten als Einzelwerte oder ein Tupel übergeben werden: https://github.com/mkleehammer/pyodbc/wiki/Cursor#executesql-parameters. Versuchen Sie, eine executemany einfügen vier Reihen in diesem Beispiel zu tun?

https://github.com/mkleehammer/pyodbc/wiki/Cursor#executemanysql-paras

cursor = connection.cursor() 
select_string= "INSERT INTO Person (_key, id, firstName, lastName, salary) VALUES (322, ? , 'abcd', 'dhsagd', 1000)" 

id_list = [('test1',), ('test2',), ('test3',), ('test4',)] 
cursor.executemany(select_string, id_list) 
+0

Hallo, link Sie legt fest, erwähnt SQL-Abfrage über gegebene Liste auszuführen, indem Elemente in die Liste eins nach dem anderen nehmen. Wo in meinem Fall möchte ich ganze Liste in ** id ** Spalte einfügen. – rishi007bansod

+0

Mit über Änderungen, die Sie mich wieder erwähnt haben mich immer folgende Fehler, 'Traceback (jüngste Aufforderung zuletzt): File "pythonOdbclist_new.py", Zeile 13, in cursor.executemany (select_string, ID_LIST) pyodbc.ProgrammingError (‚Der SQL enthält 0 Parametermarken, aber 1 Parameter wurden geliefert‘, ‚HY000‘) ' – rishi007bansod

+0

Hallo @ FlipperPA, ich nur ganze Liste in einer Zeile eingefügt werden soll. Vielen Dank. – rishi007bansod

Verwandte Themen