mirror of
https://github.com/psycopg/psycopg2.git
synced 2024-11-29 12:23:42 +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
|
>>> 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?
|
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
|
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`.
|
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")) # 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
|
||||||
|
>>> 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?
|
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::
|
The following magic formula will do the trick::
|
||||||
|
|
|
@ -118,12 +118,13 @@ query:
|
||||||
>>> cur.execute("INSERT INTO numbers VALUES (%s)", (42,)) # correct
|
>>> cur.execute("INSERT INTO numbers VALUES (%s)", (42,)) # correct
|
||||||
|
|
||||||
- For positional variables binding, *the second argument must always be a
|
- 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::
|
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")) # 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
|
||||||
|
>>> cur.execute("INSERT INTO foo VALUES (%s)", ["bar"]) # correct
|
||||||
|
|
||||||
- Only variable values should be bound via this method: it shouldn't be used
|
- 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
|
to set table or field names. For these elements, ordinary string formatting
|
||||||
|
|
Loading…
Reference in New Issue
Block a user