Thanks,
FYI that link you sent was very useful.
For anyone else interested, here's my code snippet. I've tested this with
both mysql and sqlite databases.
def get_primary_key(tablename,*args,**kwargs):
from sqlalchemy import MetaData
metadata = MetaData(*args,**kwargs) # uri similar to instantiating
an engine
metadata.reflect()
try:
table = metadata.tables[tablename]
except KeyError:
table = metadata.tables.values()[0]
except IndexError:
raise(Exception("Error: The database does not contain any
tables."))
try:
primary_key = table.primary_key.keys()[0]
except IndexError:
raise(Exception("Error: The specified table has no primary
key!"))
return primary_key
On Wed, Apr 29, 2009 at 12:33 PM, Michael Bayer <[email protected]>wrote:
> the Table object as well as the primary_key attribute are transparent as
> far as what DBAPI and database is in use. Its also not part of the ORM.
> there is a more fine-grained interface called the Inspector available in
> 0.6, but you can get the same results by reflecting a Table.
>
> On Apr 29, 2009, at 3:09 PM, Paul Rigor (gmail) wrote:
>
> Thanks Mike,
> Like I mentioned for my particular application, I won't be using the usual
> ORM but just the bare engine/connection. I'll just be provided with a table
> name and a connection. I did a little bit of research but was only able to
> figure out how to obtain the primary for a mysql database (ie, through the
> mysql dialect instance).
>
> I was just wondering if there was a transparent interface regardless of the
> database dialect.
>
> Paul
>
> On Wed, Apr 29, 2009 at 5:35 AM, Mike Conley <[email protected]> wrote:
>
>> Look at the primary_key attribute of the table instance.
>>
>> uu = Table('u',meta,
>> Column('id',Integer,primary_key=True),
>> Column('data',Integer))
>> print uu.primary_key.columns
>> ['u.id']
>>
>>
>> Mike
>>
>>
>>
>> On Tue, Apr 28, 2009 at 7:53 PM, Paul Rigor (gmail)
>> <[email protected]>wrote:
>>
>>> Hi gang,
>>> I've recently started using sqlalchemy, so hopefully this isn't a stupid
>>> question...
>>>
>>> I was wondering whether there was an easy way to obtain a particular
>>> table's schema if one is using just bare connection (ie, not using any
>>> special orm's). Specifically, is there a utility method somewhere which
>>> allows one to obtain the primary key of a table?
>>>
>>> Thanks!!
>>> paul
>>>
>>> --
>>> Paul Rigor
>>> Graduate Student
>>> Institute for Genomics and Bioinformatics
>>> Donald Bren School of Information and Computer Sciences
>>> University of California in Irvine
>>> 248 ICS2 Bldg.
>>> +1 (760) 536 - 6767 (skype)
>>>
>>>
>>>
>>
>>
>>
>
>
> --
> Paul Rigor
> Graduate Student
> Institute for Genomics and Bioinformatics
> Donald Bren School of Information and Computer Sciences
> University of California in Irvine
> 248 ICS2 Bldg.
> +1 (760) 536 - 6767 (skype)
>
>
>
>
>
> >
>
--
Paul Rigor
Graduate Student
Institute for Genomics and Bioinformatics
Donald Bren School of Information and Computer Sciences
University of California in Irvine
248 ICS2 Bldg.
+1 (760) 536 - 6767 (skype)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---