Thread: [SQLObject] Using foreign keys that end in FK
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Brian S. <br...@mb...> - 2005-12-21 00:16:10
|
Hi All, I'm trying to use SQLObject on an legacy database and I have 2 questions: 1)The primary keys are BIGINT, not INT; I haven't tried it yet but is this going to cause me problems? 2) The foreign keys end in '_FK' rather than the 'ID' that the documentation says is required. (The doc in question is at http:// www.sqlobject.org/SQLObject.html#sqlobject-requirements). For example the tables might look like this: CREATE TABLE Person ( id BIGINT PRIMARY KEY, FirstName VARCHAR(100) NULL, LastName VARCHAR(100) NULL ) CREATE TABLE Role ( id BIGINT PRIMARY KEY, Role VARCHAR(100) NULL, PersonID_FK BIGINT NULL ) Is there any way to specify the name of the foreign key? I keep thinking there should be something like this: person = ForeignKey('Person', key = "PersonID_FK") Also, when using SQLObject to generate tables, is there anyway to force it to use BIGINT instead of INT as the primary key type? Thanks Brian Schlining Software Engineer http://www.mbari.org |
From: Alan F. <ala...@gm...> - 2005-12-21 21:36:02
|
Il Tue, 20 Dec 2005 16:16:57 -0800, Brian Schlining ha scritto: > 1)The primary keys are BIGINT, not INT; I haven't tried it yet but is > this going to cause me problems? Are you using sqlmeta.fromDatabase=True or are you reimplementing the schema in sqlobject terms? > Is there any way to specify the name of the foreign key? I keep > thinking there should be something like this: > person = ForeignKey('Person', key = "PersonID_FK") I've never tried it with FKs, but it should work. Try this: Person = ForeignKey('Person',dbName='PersonID_FK') > Also, when using SQLObject to generate tables, is there anyway to > force it to use BIGINT instead of INT as the primary key type? I suppose you could do this (but it's untested, try it... i don't know how SQLO handles PK-override, it may need to specify Unique=True and alternateID=True as well): id=Col(sqlType='BIGINT') or maybe you don't need it at all, you're dealing with integers anyway, not with some string type... try not specifying anything as an ID and checking if it works with an ID larger than a 32bit number, if it doesn't get truncated and you don't get an overflow error either, you should be safe. -- Alan Franzoni <ala...@gm...> - Togli .xyz dalla mia email per contattarmi. To contact me, remove .xyz from my email address. - GPG Key Fingerprint: 5C77 9DC3 BD5B 3A28 E7BC 921A 0255 42AA FE06 8F3E |
From: Brian S. <br...@mb...> - 2005-12-21 22:20:19
|
>> 1)The primary keys are BIGINT, not INT; I haven't tried it yet but is >> this going to cause me problems? > > Are you using sqlmeta.fromDatabase=True or are you reimplementing the > schema in sqlobject terms? I'm not re-implementing the schema. I have to work with the existing one. I didn't know about sqlmeta.fromDatabase=True, thanks for pointing it out. > >> Is there any way to specify the name of the foreign key? I keep >> thinking there should be something like this: >> person = ForeignKey('Person', key = "PersonID_FK") > > I've never tried it with FKs, but it should work. Try this: > > Person = ForeignKey('Person',dbName='PersonID_FK') I'll give it a shot. I was hoping it was as simple as that. From looking at the SQLObject code it looks like it 'should' work. >> Also, when using SQLObject to generate tables, is there anyway to >> force it to use BIGINT instead of INT as the primary key type? > > I suppose you could do this (but it's untested, try it... i don't > know how > SQLO handles PK-override, it may need to specify Unique=True and > alternateID=True as well): > > id=Col(sqlType='BIGINT') > > or maybe you don't need it at all, you're dealing with integers > anyway, not > with some string type... try not specifying anything as an ID and > checking > if it works with an ID larger than a 32bit number, if it doesn't get > truncated and you don't get an overflow error either, you should be > safe. Thanks for the tips. They're much appreciated. Brian Schlining Software Engineer http://www.mbari.org |