- changed status to resolved
bindparam ignores required=True
Issue #2381
resolved
from sqlalchemy import *
e = create_engine("sqlite://")
e.execute(
text("select * from foo where bar=:baz", bindparams=[required=True)](bindparam('baz',)),
)
#!diff
diff -r 8c05a3bf6599f92bbf8d2246123597e8966f3a52 lib/sqlalchemy/sql/compiler.py
--- a/lib/sqlalchemy/sql/compiler.py Wed Jan 18 12:42:54 2012 -0500
+++ b/lib/sqlalchemy/sql/compiler.py Sat Jan 21 10:14:19 2012 -0500
@@ -287,7 +287,6 @@
def construct_params(self, params=None, _group_number=None):
"""return a dictionary of bind parameter keys and values"""
-
if params:
pd = {}
for bindparam, name in self.bind_names.iteritems():
@@ -311,6 +310,17 @@
else:
pd = {}
for bindparam in self.bind_names:
+ if bindparam.required:
+ if _group_number:
+ raise exc.InvalidRequestError(
+ "A value is required for bind parameter %r, "
+ "in parameter group %d" %
+ (bindparam.key, _group_number))
+ else:
+ raise exc.InvalidRequestError(
+ "A value is required for bind parameter %r"
+ % bindparam.key)
+
pd[self.bind_names[bindparam](self.bind_names[bindparam)] = bindparam.effective_value
return pd
Comments (2)
-
reporter -
reporter - removed milestone
Removing milestone: 0.7.5 (automated comment)
- Log in to comment
c6e07f6a591b7172382370a09ca511e94d239723