When trying to execute a multi-line sql script using sqlobject-admin upgrade, sqlobject fails
Traceback (most recent call last):
File "/usr/bin/tg-admin", line 8, in <module>
load_entry_point('TurboGears==1.0.8', 'console_scripts', 'tg-admin')()
File "/usr/lib/python2.5/site-packages/turbogears/command/base.py", line 400, in main
command.run()
File "/usr/lib/python2.5/site-packages/turbogears/command/base.py", line 138, in run
command.the_runner.run(sys.argv)
File "/usr/lib/python2.5/site-packages/sqlobject/manager/command.py", line 101, in run
runner.run()
File "/usr/lib/python2.5/site-packages/sqlobject/manager/command.py", line 307, in run
self.command()
File "/usr/lib/python2.5/site-packages/sqlobject/manager/command.py", line 1191, in command
conn.query(sql)
File "/usr/lib/python2.5/site-packages/sqlobject/dbconnection.py", line 337, in query
return self._runWithConnection(self._query, s)
File "/usr/lib/python2.5/site-packages/sqlobject/dbconnection.py", line 250, in _runWithConnection
val = meth(conn, *args)
File "/usr/lib/python2.5/site-packages/sqlobject/dbconnection.py", line 334, in _query
self._executeRetry(conn, conn.cursor(), s)
File "/usr/lib/python2.5/site-packages/sqlobject/sqlite/sqliteconnection.py", line 197, in _executeRetry
raise Warning(ErrorMessage(e))
sqlobject.dberrors.Warning: You can only execute one statement at a time.
However, for updating database schemas, I need to be able to execute more than one statement at a time.
Patch attached looks at the query string for multiple lines, and if so, calls executescript() instead of execute().
sqlobject-sqlite-executescript.patch
I am not sure how to accept the patch. First, shouldn't SQL statements be separated by a semicolon (';'), not a eoln? Second, isn't SQLiteConnection too low-level for the patch? Shouldn't it be fixed somewhere higher so any backend can accept mutlistatment script?