[sqlalchemy] Sqlite3 auto

2011-01-28 Thread slothy Rulez a lot
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)
)



id = Column(Integer,primary_key=True,nullable=True)
eid = Column(String(132),primary_key=True)



What i'm doing wrong?

Thank you.



-- 
Alex.
Slothy, the Angry Wombat
http://angrywombat.comuv.com/portfolio/

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



Re: [sqlalchemy] Sqlite3 auto

2011-01-28 Thread A.M.

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.