Hi all, I have run into a problem with SQLAlchemy r6472 (svn trunk) which might be a bug.
I will not bore you with the details of the importer tool I am writing,
but rather enclosed a small script that exemplifies the problem.
--- typeerr.py ---
from sqlalchemy import *
from sqlalchemy.orm import *
psql_engine = create_engine(
'postgresql+psycopg2://babilen:ax8xwymferm...@localhost/typeerr_bug')
metadata = MetaData(bind=psql_engine)
ll_t = Table(u'langlinks', metadata,
Column(u'll_from', Integer,
nullable=False,
server_default='0',
),
Column(u'll_lang', Unicode(20),
nullable=False,
server_default='',
),
Column(u'll_title', Unicode(255),
nullable=False,
server_default='',
)
)
print u'Create table....'
pl_t.create()
print u'Table created....'
conn = psql_engine.connect()
# here be dragons
file_content = open('insert_stmt.sql', 'rb').read()
insert_stmt = file_content.decode('utf8')
conn.execute(insert_stmt)
--- snip ---
The program fails with the following exception:
--- Exception with minor editing (path) ---
$ python typeerr.py
Create table....
Table created....
Traceback (most recent call last):
File "typeerr.py", line 33, in <module>
conn.execute(insert_stmt)
File "../lib/sqlalchemy/engine/base.py", line 975, in execute
return Connection.executors[c](self, object, multiparams, params)
File "../lib/sqlalchemy/engine/base.py", line 1051, in _execute_text
return self.__execute_context(context)
File "../lib/sqlalchemy/engine/base.py", line 1060, in __execute_context
self._cursor_execute(context.cursor, context.statement,
context.parameters[0], context=context)
File "../lib/sqlalchemy/engine/base.py", line 1120, in _cursor_execute
self.dialect.do_execute(cursor, statement, parameters, context=context)
File "../lib/sqlalchemy/engine/default.py", line 181, in do_execute
cursor.execute(statement, parameters)
TypeError: 'dict' object does not support indexing
--- snip ---
If you want to test the behaviour yourself you can download 'insert_stmt.sql'
from:
http://www.cl.uni-heidelberg.de/~wentland/insert_stmt.sql
I would like to note that piping the insert statement directly into psql works
fine:
--- snip ---
$ psql -d typeerr_bug < insert_stmt.sql
INSERT 0 32173
--- snip ---
What is causing this behaviour and even more importantly: What can I do
about it?
kind regards
Wolodja Wentland
signature.asc
Description: Digital signature
