On Sep 18, 2008, at 8:06 AM, Bruce Smith wrote:
> Hello
>
> I have Oracle Express Release 10.2.0.1.0, SQLAlchemy 0.4.5, Python
> 2.5.2 on Ubuntu x86 8.04.
>
> When I go through the ORM tutorial at
> http://www.sqlalchemy.org/docs/04/ormtutorial.html
> it fails at the first query below the heading Saving Objects with
> an Oracle ORA-01400 error as follows:
>
> sqlalchemy.exceptions.DatabaseError: (DatabaseError) ORA-01400:
> cannot insert NULL into ("BRUCE"."USERS"."ID")
> 'INSERT INTO users (id, name, fullname, password) VALUES
> (:id, :name, :fullname, :password)' {'fullname': 'Ed Jones',
> 'password': 'edspassword', 'name': 'ed', 'id': None}
>
> My create_engine string was
> engine = sa.create_engine('oracle://bruce:[EMAIL PROTECTED]', echo=True)
>
> The superficial reason for the error is obvious. Is this an Oracle
> eccentricity? Is there a workaround?
With Oracle, SQLA needs you to supply a Sequence for each column which
you'd like to have "autoincrementing" behavior - the tutorial assumes
all primary key columns are autoincrementing. SQLA will issue the
CREATE SEQUENCE for you upon table.create(), but you need to just give
it a name (the Oracle crowd, in my experience, appreciates no names of
anything being guessed):
Column('id', Integer, Sequence('mytable_id_seq'), primary_key=True)
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---