Re: [Sqlalchemy-tickets] [sqlalchemy] #2944: Confusing error message when passing empty list to Ins
Brought to you by:
zzzeek
|
From: sqlalchemy <mi...@zz...> - 2014-02-07 21:25:33
|
#2944: Confusing error message when passing empty list to Insert.values()
----------------------------------+------------------------------------
Reporter: jet57 | Owner: zzzeek
Type: defect | Status: new
Priority: medium | Milestone:
Component: (none) | Severity: no triage selected yet
Resolution: | Keywords:
Progress State: awaiting triage |
----------------------------------+------------------------------------
Comment (by zzzeek):
an empty list should indicate a single list of parameters for one row,
where the row has no values.
so this patch:
{{{
#!diff
diff --git a/lib/sqlalchemy/sql/dml.py b/lib/sqlalchemy/sql/dml.py
index 854b894..658b116 100644
--- a/lib/sqlalchemy/sql/dml.py
+++ b/lib/sqlalchemy/sql/dml.py
@@ -37,7 +37,8 @@ class UpdateBase(DialectKWArgs, HasPrefixes, Executable,
ClauseElement):
return p
if isinstance(parameters, (list, tuple)) and \
- isinstance(parameters[0], (list, tuple, dict)):
+ parameters and \
+ isinstance(parameters[0], (list, tuple, dict)):
if not self._supports_multi_parameters:
raise exc.InvalidRequestError(
}}}
gets us this for PG:
{{{
from sqlalchemy.sql import table, column
from sqlalchemy.dialects import postgresql
s = table('t', column('a'), column('b')).insert().values([])
print s.compile(dialect=postgresql.dialect())}
INSERT INTO t DEFAULT VALUES
}}}
the same as if you called `.values()` with no argument.
--
Ticket URL: <http://www.sqlalchemy.org/trac/ticket/2944#comment:1>
sqlalchemy <http://www.sqlalchemy.org/>
The Database Toolkit for Python
|