what do you want p.data to return ? leaving it undefined is enough for the ORM to consider it as "unloaded". Your best option here would be just to not map the column (see the exclude_columns argument for that).
On Jun 21, 2010, at 5:48 AM, GHZ wrote: > including small example > > in the actual case, I can't find anything as obvious as the equivalent > of 'print t.data' in my code.. but something is triggering these > selects of columns with defaults > > > > > from sqlalchemy import MetaData, create_engine, Table, Column, Integer > from sqlalchemy.orm import mapper, sessionmaker, relationship > > engine = create_engine('oracle://bob:b...@mig01', echo=True) > meta = MetaData(bind=engine) > > ddls = [ > """drop table t""", > """create table t (id number primary key, > data number default null) > """ > ] > > for ddl in ddls: > engine.execute(ddl) > > > t = Table('t', meta, autoload=True, useexisting=True) > > meta.create_all() > > class T(object): > pass > > session = sessionmaker()() > > mapper(T, t) > > p = T() > p.id = 1 > session.add(p) > session.flush() > > print p.data > > > > > > 2010-06-21 11:41:46,168 INFO sqlalchemy.engine.base.Engine.0x...84ec > {'table_name': u'T', 'schema': u'BOB'} > 2010-06-21 11:41:46,173 INFO sqlalchemy.engine.base.Engine.0x...84ec > SELECT table_name FROM all_tables WHERE table_name = :name AND owner > = :schema_name > 2010-06-21 11:41:46,173 INFO sqlalchemy.engine.base.Engine.0x...84ec > {'name': u'T', 'schema_name': u'BOB'} > 2010-06-21 11:41:46,184 INFO sqlalchemy.engine.base.Engine.0x...84ec > BEGIN > 2010-06-21 11:41:46,185 INFO sqlalchemy.engine.base.Engine.0x...84ec > INSERT INTO t (id) VALUES (:id) > 2010-06-21 11:41:46,186 INFO sqlalchemy.engine.base.Engine.0x...84ec > {'id': 1} > 2010-06-21 11:41:46,215 INFO sqlalchemy.engine.base.Engine.0x...84ec > SELECT t.data AS t_data > FROM t > WHERE t.id = :param_1 > 2010-06-21 11:41:46,215 INFO sqlalchemy.engine.base.Engine.0x...84ec > {'param_1': 1} > > On 21 Jun, 11:40, GHZ <geraint.willi...@gmail.com> wrote: >> Hi, >> >> If I create a table with a default. >> >> create table T (id number primary key, data number default NULL) >> >> Then reflect this table. >> >> then using the ORM I trigger an insert, but only into the id column >> and flush() >> then I try to access the 'data' attribute >> >> this causes a select, to get the actual value of 'data' >> >> Is there any simple way to turn this behavior off`.. i.e for >> sqlalchemy to pretend the server default does not exist..? >> >> Thanks. > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalch...@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. > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@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.