On Jun 9, 2014, at 7:11 PM, AM <[email protected]> wrote:

> On 06/09/2014 03:30 PM, Michael Bayer wrote:
>> On Jun 9, 2014, at 4:32 PM, AM <[email protected]> wrote:
>> 
>>> Hi all.
>>> 
>>> In my app I have a bootstrap method that calls:
>>> 
>>> metadata.create_all(checkfirst)
>>> 
>>> against a postgres RDS instance.
>>> 
>>> The tables already exist however the query emitted seems to be:
>>> 
>>> CREATE TABLE user_roles (
>>>        user_id INTEGER NOT NULL,
>>>        role_id INTEGER NOT NULL,
>>>        PRIMARY KEY (user_id, role_id),
>>>        FOREIGN KEY(user_id) REFERENCES "user" (id),
>>>        FOREIGN KEY(role_id) REFERENCES role (id)
>>> )
>>> 
>>> Per my understanding this query should not even be emitted or if it is 
>>> there should be a 'IF NOT EXISTS' somewhere in there.
>>> 
>>> I was wondering if someone could point out what I am doing wrong?
>> it doesn't use "IF NOT EXISTS".  it runs a query against pg_namespace.  Turn 
>> on echo=True on your engine and you'll see something like:
>> 
>> select relname from pg_class c join pg_namespace n on n.oid=c.relnamespace 
>> where n.nspname=current_schema() and relname=%(name)s
>> {'name': u'a'}
>> 
>> CREATE TABLE a (
>>      id SERIAL NOT NULL,
>>      PRIMARY KEY (id)
>> )
>> 
>> if this query isn't succeeding, perhaps you have a schema mismatch of some 
>> kind.  if the CREATE TABLE does succeed then the default schema is probably 
>> not what you expect.
>> 
> 
> So I do get the pg_namespace query with one row in the result. What I am a it 
> confused about is why the CREATE is emitted since the table exists?

That output above isn't actually showing any result rows, the {"name"} there 
are the params in the query.  use echo='debug' to actually see the result rows, 
if any.


-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to