i commited the fix for the previous issue and a probable fix for the current issue youre having in r2674.
we can put a buildslave on your firebird host that would run all the tests everytime a SA checkin occurs. although we'd have to really qualify a lot of the tests which arent supported for firebird to get a 100% passed... On May 30, 2007, at 2:47 PM, Roger Demetrescu wrote: > > Michael, the patch did the trick... > > I was able to print the statement, execute it, and also do some > inserts using ORM... > > Now the second part of my problem, which is not fixed yet... ;) > > here is the script (now using default value/expression): > > ================================ > > from datetime import datetime > from sqlalchemy import * > > db = create_engine("firebird://user:[EMAIL PROTECTED]//database.fdb") > > metadata = BoundMetaData(db) > > pessoa_table = Table('pessoa', metadata, > Column('pes_id', Integer, primary_key=True), > Column('pes_data', DateTime, default=func.current_timestamp()), > Column('pes_nome', String(30)), > Column('pes_sobrenome', String(30)), > Column('pes_idade', Integer), > Column('pes_idade', Integer)) > > s = pessoa_table.select() > u = pessoa_table.update() > i = pessoa_table.insert() > > ================================ > > > Now my shell session : > > >>>> i.execute(pes_id=111, pes_data=datetime.now()) > <sqlalchemy.engine.base.ResultProxy object at 0x018C0D50> > > > >>>> i.execute(pes_id=222) > Traceback (most recent call last): > File "<pyshell#11>", line 1, in <module> > i.execute(pes_id=222) > File "d:\sqlalchemy\lib\sqlalchemy\sql.py", line 1175, in execute > return self.compile(engine=self.engine, > parameters=compile_params).execute(*multiparams, **params) > File "d:\sqlalchemy\lib\sqlalchemy\sql.py", line 1064, in execute > return e.execute_compiled(self, *multiparams, **params) > File "d:\sqlalchemy\lib\sqlalchemy\engine\base.py", line 783, in > execute_compiled > return connection.execute_compiled(compiled, *multiparams, > **params) > File "d:\sqlalchemy\lib\sqlalchemy\engine\base.py", line 570, in > execute_compiled > context.pre_exec() > File "d:\sqlalchemy\lib\sqlalchemy\engine\default.py", line 200, > in pre_exec > self._process_defaults() > File "d:\sqlalchemy\lib\sqlalchemy\engine\default.py", line 303, in > _process_defaults > newid = drunner.get_column_default(c) > File "d:\sqlalchemy\lib\sqlalchemy\engine\base.py", line 1234, in > get_column_default > return column.default.accept_visitor(self) > File "d:\sqlalchemy\lib\sqlalchemy\schema.py", line 807, in > accept_visitor > return visitor.visit_column_default(self) > File "d:\sqlalchemy\lib\sqlalchemy\engine\base.py", line 1275, in > visit_column_default > return self.exec_default_sql(default) > File "d:\sqlalchemy\lib\sqlalchemy\databases\firebird.py", line 367, > in exec_default_sql > c = sql.select([default.arg], > from_obj=["rdb$database"]).compile(engine=self.engine) > AttributeError: 'FBDefaultRunner' object has no attribute 'engine' > > > > Now I'm going to explicitly insert a row with pes_data = NULL > (should'nt that work ??): > >>>> i.execute(pes_id=333, pes_data=None) > Traceback (most recent call last): > File "<pyshell#12>", line 1, in <module> > i.execute(pes_id=333, pes_data=None) > File "d:\sqlalchemy\lib\sqlalchemy\sql.py", line 1175, in execute > return self.compile(engine=self.engine, > parameters=compile_params).execute(*multiparams, **params) > File "d:\sqlalchemy\lib\sqlalchemy\sql.py", line 1064, in execute > return e.execute_compiled(self, *multiparams, **params) > File "d:\sqlalchemy\lib\sqlalchemy\engine\base.py", line 783, in > execute_compiled > return connection.execute_compiled(compiled, *multiparams, > **params) > File "d:\sqlalchemy\lib\sqlalchemy\engine\base.py", line 570, in > execute_compiled > context.pre_exec() > File "d:\sqlalchemy\lib\sqlalchemy\engine\default.py", line 200, > in pre_exec > self._process_defaults() > File "d:\sqlalchemy\lib\sqlalchemy\engine\default.py", line 303, in > _process_defaults > newid = drunner.get_column_default(c) > File "d:\sqlalchemy\lib\sqlalchemy\engine\base.py", line 1234, in > get_column_default > return column.default.accept_visitor(self) > File "d:\sqlalchemy\lib\sqlalchemy\schema.py", line 807, in > accept_visitor > return visitor.visit_column_default(self) > File "d:\sqlalchemy\lib\sqlalchemy\engine\base.py", line 1275, in > visit_column_default > return self.exec_default_sql(default) > File "d:\sqlalchemy\lib\sqlalchemy\databases\firebird.py", line 367, > in exec_default_sql > c = sql.select([default.arg], > from_obj=["rdb$database"]).compile(engine=self.engine) > AttributeError: 'FBDefaultRunner' object has no attribute 'engine' > > > > > Thanks Michael > > > PS: I am in the process of upgrading a dedicated host running Firebird > 1.5.... after it is finished, maybe we could talk about how you can > use it to test firebird engine... (if you are interested, of > course)... > > > > > On 5/30/07, Michael Bayer <[EMAIL PROTECTED]> wrote: >> hey roger - >> >> the fix for that issue is trivial, however the code which it fixes is >> doing something that should be done differently (that is, ensuring >> that all pk columns are present in an INSERT statement). Since I >> dont have FB here, can you try out the attached patch and see if it >> works for you, not just for the "print i" part (that part works) but >> for running some actual INSERT statements (and maybe the ORM) a >> little bit as well ? >> >> thanks >> >> - mike > > > --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---