summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Bandet <gbandet@multiposting.fr>2013-11-04 16:17:57 +0100
committerGuillaume Bandet <gbandet@multiposting.fr>2013-11-04 16:17:57 +0100
commit87d1145c0d6ee4f5a8ecf6d5c62d2479b9cf27ea (patch)
treef2bb9fe8ddc860ee15c54636b894c6e7b1bdc4c3
parentc8b2744ea2b1e4419b7e3d93928e92c95f366815 (diff)
downloadmysqldb1-87d1145c0d6ee4f5a8ecf6d5c62d2479b9cf27ea.tar.gz
Fix the conversion of list or tuple args to a SQL.
When there is one element on the list, the generated SQL was (1,) (python notation of a single element tuple, which is not valid in SQL.
-rw-r--r--MySQLdb/converters.py7
-rw-r--r--MySQLdb/cursors.py5
2 files changed, 9 insertions, 3 deletions
diff --git a/MySQLdb/converters.py b/MySQLdb/converters.py
index 491d49b..26c1f90 100644
--- a/MySQLdb/converters.py
+++ b/MySQLdb/converters.py
@@ -129,13 +129,16 @@ def char_array(s):
def array2Str(o, d):
return Thing2Literal(o.tostring(), d)
+def quote_tuple(t, d):
+ return "(%s)" % (','.join(escape_sequence(t, d)))
+
conversions = {
IntType: Thing2Str,
LongType: Long2Int,
FloatType: Float2Str,
NoneType: None2NULL,
- TupleType: escape_sequence,
- ListType: escape_sequence,
+ TupleType: quote_tuple,
+ ListType: quote_tuple,
DictType: escape_dict,
InstanceType: Instance2Str,
ArrayType: array2Str,
diff --git a/MySQLdb/cursors.py b/MySQLdb/cursors.py
index 7e5a887..8815b80 100644
--- a/MySQLdb/cursors.py
+++ b/MySQLdb/cursors.py
@@ -180,7 +180,10 @@ class BaseCursor(object):
if isinstance(query, unicode):
query = query.encode(db.unicode_literal.charset)
if args is not None:
- query = query % db.literal(args)
+ if isinstance(args, dict):
+ query = query % {key: db.literal(item) for key, item in args.iteritems()}
+ else:
+ query = query % tuple([db.literal(item) for item in args])
try:
r = None
r = self._query(query)