Wolodja Wentland wrote: > Hi all, > > I have run into a problem with SQLAlchemy r6472 (svn trunk) which might > be a bug.
the error is raised directly by psycopg2. I'd try taking out the ";" at the end of the statement, and also checking against a literal string to see if something weird is happening when you read the file. > > 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 > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---