recent version of SA ? if no primary keys, should throw an error immediately.
On Mar 27, 2007, at 1:54 AM, Karthik Krishnamurthy wrote: > It works after I specify primary_key in my mapper or > allow_null_pks, but not if I specify > the column as primary_key in the Table() constructor. > > Thanks > /kk > > On 3/26/07, Michael Bayer <[EMAIL PROTECTED]> wrote: > > i notice that neither your table DDL nor your mappers have any notion > of a primary key, so thats not the complete application...whats below > will throw an error immediately. > > but the most likely cause for what youre seeing is that if any > element of the primary key in a result row is "None", no row will be > loaded. this behavior can be changed using the "allow_null_pks" > option on your mapper. > > > On Mar 26, 2007, at 7:17 AM, Karthik Krishnamurthy wrote: > > > > > Hi, > > I find that sqlalchemy isn't creating objects for certain rows. > > > > For example the following code gives me back an OpsDB.Node instance > > query.select_by(name=' konsole12.xx.xx.com')[0] > > whereas > > query.select_by(name='konsole23.xx.xxx.com')[0] > > > > I have provided below the debugging output gotten by setting > > sqlalchemy.engine and sqlalchemy.orm at DEBUG, the table schema and > > the code that defines the table and the mapper for the said table. > > > > /kk > > > > DEBUG info > > ======================================================= > > INFO:sqlalchemy.engine.base.Engine.0x..74:SELECT node.cport AS > > node_cport, node.type_id AS node_type_id, node.locshelf AS > > node_locshelf, node.s_time AS node_s_time, node.site_id AS > > node_site_id, node.console_id AS node_console_id, node.locside AS > > node_locside, node.locarea AS node_locarea, node.netswitch_id AS > > node_netswitch_id, node.bmodule2 AS node_bmodule2, node.sport AS > > node_sport, node.node_id AS node_node_id, node.bplug AS node_bplug, > > node.bmodule AS node_bmodule, node.parent_id AS node_parent_id, > > node.os_id AS node_os_id, node.bport2 AS node_bport2, node.backplane > > AS node_backplane, node.prop_id AS node_prop_id, node.status AS > > node_status, node.model_id AS node_model_id, node.locrow AS > > node_locrow, node.serialno AS node_serialno, node.bootbox2_id AS > > node_bootbox2_id, node.m_time AS node_m_time, node.ytag AS > node_ytag, > > node.bplug2 AS node_bplug2, node.loccage AS node_loccage, > > node.ponumber AS node_ponumber, node.name AS node_name, > node.racksize > > AS node_racksize, node.bootbox_id AS node_bootbox_id, > node.locroom AS > > node_locroom, node.notes AS node_notes, node.bport AS node_bport, > > node.locrack AS node_locrack, node.c_time AS node_c_time, > node.pdu AS > > node_pdu > > FROM node > > WHERE node.name = ? ORDER BY node.oid > > INFO:sqlalchemy.engine.base.Engine.0x..74:['konsole19.xx.xxxx.com'] > > DEBUG:sqlalchemy.orm.query.Query:instances() > > DEBUG:sqlalchemy.engine.base.Engine.0x..74:Row (30021, 106, 2, 2006, > > 91, 106822, u'a', u'E', None, 0, 0, 106818, 0, 0, None, None, 0, > u'', > > 73, u'active', 179, u'19', u'TES113830', None, u'2006-11-30 > 19:31:28', > > u'126785', 0, 0, u'', u'konsole19.xx.xxxx.com ', 1, None, 0, u'', > 0, 1, > > 1135015620, u'') > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > DEBUG:sqlalchemy.orm.strategies.LazyLoader:set class-level lazy > loader > > on [EMAIL PROTECTED] > > INFO:sqlalchemy.engine.base.Engine.0x..74:SELECT node.cport AS > > node_cport, node.type_id AS node_type_id, node.locshelf AS > > node_locshelf, node.s_time AS node_s_time, node.site_id AS > > node_site_id, node.console_id AS node_console_id, node.locside AS > > node_locside, node.locarea AS node_locarea, node.netswitch_id AS > > node_netswitch_id, node.bmodule2 AS node_bmodule2, node.sport AS > > node_sport, node.node_id AS node_node_id, node.bplug AS node_bplug, > > node.bmodule AS node_bmodule, node.parent_id AS node_parent_id, > > node.os_id AS node_os_id, node.bport2 AS node_bport2, node.backplane > > AS node_backplane, node.prop_id AS node_prop_id, node.status AS > > node_status, node.model_id AS node_model_id, node.locrow AS > > node_locrow, node.serialno AS node_serialno, node.bootbox2_id AS > > node_bootbox2_id, node.m_time AS node_m_time, node.ytag AS > node_ytag, > > node.bplug2 AS node_bplug2, node.loccage AS node_loccage, > > node.ponumber AS node_ponumber, node.name AS node_name, > node.racksize > > AS node_racksize, node.bootbox_id AS node_bootbox_id, > node.locroom AS > > node_locroom, node.notes AS node_notes, node.bport AS node_bport, > > node.locrack AS node_locrack, node.c_time AS node_c_time, > node.pdu AS > > node_pdu > > FROM node > > WHERE node.name = ? ORDER BY node.oid > > INFO:sqlalchemy.engine.base.Engine.0x..74:['konsole23.xx.xxxx.com'] > > DEBUG:sqlalchemy.orm.query.Query:instances() > > DEBUG: sqlalchemy.engine.base.Engine.0x..74:Row (0, 106, 0, 2006, > 71, > > None, u'a', u'', None, 0, 0, 107751, 0, 0, None, None, 0, u'', 73, > > u'active', 179, u'1', u'', None, u'2006-11-30 19:31:31', None, 0, 0, > > u'', u'konsole23.xx.xxxx.com', 1, None, 0, u'', 0, 1, 1135127145, > u'') > > Traceback (most recent call last): > > File "test1.py ", line 13, in ? > > node = query.select_by(name='konsole23.ird.yahoo.com')[0] > > IndexError: list index out of range > > > > ======================================================= > > The schema: > > > > ======================================================= > > sqlite> .schema node > > CREATE TABLE node ( > > node_id integer(10) NOT NULL, > > name VARCHAR(255), > > ytag VARCHAR(32), > > type_id integer(10), > > status varchar(32) NOT NULL, > > parent_id integer(10), > > prop_id integer(10), > > site_id integer(10), > > backplane CHAR(1) NOT NULL, > > model_id integer(10), > > os_id integer(10), > > serialno VARCHAR(32) NOT NULL, > > locroom integer(10) NOT NULL, > > loccage integer(10) NOT NULL, > > locarea VARCHAR(8) NOT NULL, > > locrow CHAR(2) NOT NULL, > > locrack integer(10) NOT NULL, > > locside char(1) NOT NULL, > > locshelf integer(3) NOT NULL, > > racksize INTEGER(2), > > bootbox_id integer(10), > > bport integer(10) NOT NULL, > > bmodule integer(10) NOT NULL, > > bplug integer(10) NOT NULL, > > bootbox2_id integer(10), > > bport2 integer(10) NOT NULL, > > bmodule2 integer(10) NOT NULL, > > bplug2 integer(10) NOT NULL, > > console_id integer(10), > > cport integer(10) NOT NULL, > > netswitch_id integer(10), > > sport integer(10) NOT NULL, > > ponumber VARCHAR(32) NOT NULL, > > notes TEXT NOT NULL, > > pdu VARCHAR(255) NOT NULL, > > c_time integer(10) NOT NULL, > > m_time integer(14) NOT NULL, > > s_time integer(10) NOT NULL, > > UNIQUE (node_id), > > UNIQUE (name), > > UNIQUE (ytag)); > > ======================================================= > > > > code > > ======================================================= > > _nodeTable = self._nodeTable = Table( > > 'node', _metadata, > > Column('prop_id', Integer, > > ForeignKey('property.prop_id')), > > Column('site_id', Integer, ForeignKey('site.site_id')), > > Column('os_id', Integer, ForeignKey('os.os_id' )), > > Column('console_id', Integer, ForeignKey > ('node.node_id')), > > Column('bootbox_id', Integer, ForeignKey > ('node.node_id')), > > Column('bootbox2_id', Integer, > > ForeignKey('node.node_id')), > > Column('netswitch_id', Integer, > > ForeignKey('node.node_id')), > > Column('type_id', Integer, > > ForeignKey(' dictionary.dict_id')), > > Column('model_id', Integer, ForeignKey > ('model.model_id')), > > autoload=True > > ) > > > > mapper(OpsDB.Node, self._nodeTable, properties={ > > 'id': self._nodeTable.c.node_id, > > 'property': relation(OpsDB.Property, backref='nodes'), > > 'site': relation(OpsDB.Site, backref='nodes'), > > 'os': relation(OpsDB.OS, backref='nodes'), > > 'console': relation( > > OpsDB.Node, > > primaryjoin = _nodeTable.c.console_id == > > _nodeTable.c.node_id, > > remote_side = [_nodeTable.c.node_id], > > backref = 'consoleNodes', > > ), > > 'bootbox' : relation( > > OpsDB.Node, > > primaryjoin = _nodeTable.c.bootbox_id == > > _nodeTable.c.node_id, > > remote_side=[_nodeTable.c.node_id], > > backref = 'bootboxNodes', > > ), > > 'bootbox2' : relation( > > OpsDB.Node, > > primaryjoin = _nodeTable.c.bootbox2_id == > > _nodeTable.c.node_id, > > remote_side=[_nodeTable.c.node_id], > > backref = 'bootbox2Nodes', > > ), > > 'switch' : relation( > > OpsDB.Node, > > primaryjoin = _nodeTable.c.netswitch_id == > > _nodeTable.c.node_id, > > remote_side=[_nodeTable.c.node_id], > > backref = 'switchNodes', > > ), > > 'type' : relation(OpsDB.Dictionary , > backref='typeNodes'), > > 'model' : relation(OpsDB.Dictionary, > > backref='modelNodes'), > > }) > > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---