Author: phd
Date: 2005-10-12 14:46:53 +0000 (Wed, 12 Oct 2005)
New Revision: 1108
Modified:
home/phd/SQLObject/paramstyles/sqlobject/dbconnection.py
Log:
Fixed a numnber of bugs in _convertQuery() and _executeRetry().
Converted _insertSQL() to use SQLQuery and Param (actually, insert()).
Modified: home/phd/SQLObject/paramstyles/sqlobject/dbconnection.py
===================================================================
--- home/phd/SQLObject/paramstyles/sqlobject/dbconnection.py 2005-10-12 12:58:57 UTC (rev 1107)
+++ home/phd/SQLObject/paramstyles/sqlobject/dbconnection.py 2005-10-12 14:46:53 UTC (rev 1108)
@@ -292,23 +292,20 @@
def _convertQuery(self, query):
paramstyle = self.module.paramstyle
- converter = getattr(DBSingleStyle, "to_" % paramstyle)
- query_string, params = converter(query.query_list)
- if paramstyle in ("named", "pyformat"):
- keywords = params
- params = []
- else:
- keywords = {}
- return query_string, params, keywords
+ converter = getattr(DBSingleStyle, "to_" + paramstyle)
+ return converter(query.query_list)
def _executeRetry(self, conn, cursor, query):
- if self.debug:
- self.printDebug(conn, query, 'QueryR')
if isinstance(query, str):
+ if self.debug:
+ self.printDebug(conn, query, 'QueryR')
return cursor.execute(query)
elif isinstance(query, sqlbuilder.SQLQuery):
- query_string, params, keywords = self._convertQuery(query)
- return cursor.execute(query_string, *params, **keywords)
+ query_string, params = self._convertQuery(query)
+ if self.debug:
+ self.printDebug(conn, query_string, 'QueryString')
+ self.printDebug(conn, params, 'QueryParams')
+ return cursor.execute(query_string, params)
else:
raise TypeError, "_executeRetry expects query string, not %s" % type(query)
@@ -364,9 +361,8 @@
return self._runWithConnection(self._queryOne, s)
def _insertSQL(self, table, names, values):
- return ("INSERT INTO %s (%s) VALUES (%s)" %
- (table, ', '.join(names),
- ', '.join([self.sqlrepr(v) for v in values])))
+ name_value_dict = dict(zip(names, values))
+ return sqlbuilder.SQLQuery(DBSingleStyle.insert(table, name_value_dict))
def transaction(self):
return Transaction(self)
|