mirror of
https://github.com/psycopg/psycopg2.git
synced 2024-11-22 17:06:33 +03:00
Fixed docs: the execute argument must be a sequence, not a tuple.
This commit is contained in:
parent
21dfc2c592
commit
f2c5d04f39
|
@ -63,7 +63,7 @@ I can't pass an integer or a float parameter to my query: it says *a number is r
|
|||
>>> cur.execute("INSERT INTO numbers VALUES (%s)", (42,)) # correct
|
||||
|
||||
I try to execute a query but it fails with the error *not all arguments converted during string formatting* (or *object does not support indexing*). Why?
|
||||
Psycopg always require positional arguments to be passed as a tuple, even
|
||||
Psycopg always require positional arguments to be passed as a sequence, even
|
||||
when the query takes a single parameter. And remember that to make a
|
||||
single item tuple in Python you need a comma! See :ref:`query-parameters`.
|
||||
::
|
||||
|
@ -71,6 +71,7 @@ I try to execute a query but it fails with the error *not all arguments converte
|
|||
>>> cur.execute("INSERT INTO foo VALUES (%s)", "bar") # WRONG
|
||||
>>> cur.execute("INSERT INTO foo VALUES (%s)", ("bar")) # WRONG
|
||||
>>> cur.execute("INSERT INTO foo VALUES (%s)", ("bar",)) # correct
|
||||
>>> cur.execute("INSERT INTO foo VALUES (%s)", ["bar"]) # correct
|
||||
|
||||
My database is Unicode, but I receive all the strings as UTF-8 `str`. Can I receive `unicode` objects instead?
|
||||
The following magic formula will do the trick::
|
||||
|
|
|
@ -118,12 +118,13 @@ query:
|
|||
>>> cur.execute("INSERT INTO numbers VALUES (%s)", (42,)) # correct
|
||||
|
||||
- For positional variables binding, *the second argument must always be a
|
||||
tuple*, even if it contains a single variable. And remember that Python
|
||||
sequence*, even if it contains a single variable. And remember that Python
|
||||
requires a comma to create a single element tuple::
|
||||
|
||||
>>> cur.execute("INSERT INTO foo VALUES (%s)", "bar") # WRONG
|
||||
>>> cur.execute("INSERT INTO foo VALUES (%s)", ("bar")) # WRONG
|
||||
>>> cur.execute("INSERT INTO foo VALUES (%s)", ("bar",)) # correct
|
||||
>>> cur.execute("INSERT INTO foo VALUES (%s)", ["bar"]) # correct
|
||||
|
||||
- Only variable values should be bound via this method: it shouldn't be used
|
||||
to set table or field names. For these elements, ordinary string formatting
|
||||
|
|
Loading…
Reference in New Issue
Block a user