On Jan 28, 2011, at 8:07 AM, slothy Rulez a lot wrote:

> Hi, []
> 
> I'm trying to create tables in SQLITE, with a composite PK (id, eid), I want
> the id have the auto increment.
> I've read this,
> http://www.sqlalchemy.org/docs/dialects/sqlite.html#auto-incrementing-behavior,
> and following your instructions, added __table_args__ =
> {'sqlite_autoincrement':True}
> (I'm using declarative), but i'm not having any difference.
> 
> This is the debug exit and the declarative code:
> 
> 2011-01-28 13:48:56,999 INFO sqlalchemy.engine.base.Engine.0x...b9ec
> CREATE TABLE elementos_filiales (
> id INTEGER,
> tipo TEXT,
> timestamp TEXT,
> eid VARCHAR(127) NOT NULL,
> nombre TEXT,
> eliminado INTEGER,
> padre INTEGER,
> PRIMARY KEY (id, eid),
> FOREIGN KEY(padre) REFERENCES elementos_multinacionales (id)
> )

What you are trying to do won't work in SQLite because INTEGER PRIMARY KEY is 
an alias for a special SQLite ROWID. So, when you create a two-column primary 
key, you lose the ROWID alias feature. AUTOINCREMENT can apparently only be 
used with a single-column primary key:

sqlite> create table gonk(a INTEGER AUTOINCREMENT,b varchar,primary key(a,b));
Error: near "AUTOINCREMENT": syntax error
sqlite> create table gonk(a INTEGER PRIMARY KEY AUTOINCREMENT,b varchar,primary 
key(a,b));
Error: table "gonk" has more than one primary key

However, you should be able to create a table having id as the primary key and 
a unique constraint on (id,eid) which should be effectively the same.

Cheers,
M

-- 
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 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to