def execute_text(self, statement, *multiparams, **params):
if len(multiparams) == 0:
parameters = params
- elif len(multiparams) == 1 and (isinstance(multiparams[0], list) or isinstance(multiparams[0], dict)):
+ elif len(multiparams) == 1 and (isinstance(multiparams[0], list) or isinstance(multiparams[0], tuple) or isinstance(multiparams[0], dict)):
parameters = multiparams[0]
else:
parameters = list(multiparams)
def _execute_raw(self, context):
self.__engine.logger.info(context.statement)
self.__engine.logger.info(repr(context.parameters))
- if context.parameters is not None and isinstance(context.parameters, list) and len(context.parameters) > 0 and (isinstance(context.parameters[0], list) or isinstance(context.parameters[0], dict)):
+ if context.parameters is not None and isinstance(context.parameters, list) and len(context.parameters) > 0 and (isinstance(context.parameters[0], list) or isinstance(context.parameters[0], tuple) or isinstance(context.parameters[0], dict)):
self._executemany(context)
else:
self._execute(context)
@testbase.supported('sqlite')
def test_raw_qmark(self):
for conn in (testbase.db, testbase.db.connect()):
- conn.execute("insert into users (user_id, user_name) values (?, ?)", [1,"jack"])
- conn.execute("insert into users (user_id, user_name) values (?, ?)", [2,"ed"], [3,"horse"])
- conn.execute("insert into users (user_id, user_name) values (?, ?)", 4, 'sally')
+ conn.execute("insert into users (user_id, user_name) values (?, ?)", (1,"jack"))
+ conn.execute("insert into users (user_id, user_name) values (?, ?)", [2,"fred"])
+ conn.execute("insert into users (user_id, user_name) values (?, ?)", [3,"ed"], [4,"horse"])
+ conn.execute("insert into users (user_id, user_name) values (?, ?)", (5,"barney"), (6,"donkey"))
+ conn.execute("insert into users (user_id, user_name) values (?, ?)", 7, 'sally')
res = conn.execute("select * from users")
- assert res.fetchall() == [(1, "jack"), (2, "ed"), (3, "horse"), (4, 'sally')]
+ assert res.fetchall() == [(1, "jack"), (2, "fred"), (3, "ed"), (4, "horse"), (5, "barney"), (6, "donkey"), (7, 'sally')]
conn.execute("delete from users")
@testbase.supported('mysql')