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

Reply via email to