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
-~----------~----~----~----~------~----~------~--~---

Reply via email to