Previously (I believe with r879) I was able to insert new items into
my tables without having a "Sequence" defined. Now (using r893) I get
an error.
This is the table definition and object:
CREATE TABLE attribute_type (
id serial PRIMARY KEY,
name varchar NOT NULL UNIQUE,
alias varchar,
UNIQUE (alias)
) WITHOUT OIDS;
attributeType = sa.Table("attribute_type", engine,
sa.Column("id", sa.Integer, primary_key=True),
sa.Column("name", String, nullable=False, ),
sa.Column("alias", String, nullable=False, ),
)
This is the code to reproduce the error:
>>> AttributeType(name="Box Wood", alias="boxWood")
>>> objectstore.commit()
INSERT INTO attribute_type (id, name, alias) VALUES (%(id)s, %(name)
s, %(alias)s)
{'alias': 'boxWood', 'id': None, 'name': 'Box Wood'}
Traceback (most recent call last):
...
File "/Library/Python/2.3/site-packages/SQLAlchemy-0.91alpha-
py2.3.egg/sqlalchemy/mapping/objectstore.py", line 69, in commit
uow().commit(*obj)
File "/Library/Python/2.3/site-packages/SQLAlchemy-0.91alpha-
py2.3.egg/sqlalchemy/mapping/objectstore.py", line 305, in commit
commit_context.execute(echo=echo_commit)
File "/Library/Python/2.3/site-packages/SQLAlchemy-0.91alpha-
py2.3.egg/sqlalchemy/mapping/objectstore.py", line 424, in execute
head.execute(self)
File "/Library/Python/2.3/site-packages/SQLAlchemy-0.91alpha-
py2.3.egg/sqlalchemy/mapping/objectstore.py", line 570, in execute
self.mapper.save_obj(self.tosave_objects(), trans)
File "/Library/Python/2.3/site-packages/SQLAlchemy-0.91alpha-
py2.3.egg/sqlalchemy/mapping/mapper.py", line 572, in save_obj
statement.execute(**params)
File "/Library/Python/2.3/site-packages/SQLAlchemy-0.91alpha-
py2.3.egg/sqlalchemy/sql.py", line 400, in execute
return c.execute(*multiparams, **params)
File "/Library/Python/2.3/site-packages/SQLAlchemy-0.91alpha-
py2.3.egg/sqlalchemy/sql.py", line 290, in execute
return self.engine.execute_compiled(self, params)
File "/Library/Python/2.3/site-packages/SQLAlchemy-0.91alpha-
py2.3.egg/sqlalchemy/engine.py", line 533, in execute_compiled
proxy(str(compiled), parameters)
File "/Library/Python/2.3/site-packages/SQLAlchemy-0.91alpha-
py2.3.egg/sqlalchemy/engine.py", line 528, in proxy
self.execute(statement, parameters, connection=connection,
cursor=cursor)
File "/Library/Python/2.3/site-packages/SQLAlchemy-0.91alpha-
py2.3.egg/sqlalchemy/engine.py", line 582, in execute
self._execute(cursor, statement, parameters)
File "/Library/Python/2.3/site-packages/SQLAlchemy-0.91alpha-
py2.3.egg/sqlalchemy/engine.py", line 592, in _execute
c.execute(statement, parameters)
psycopg.IntegrityError: null value in column "id" violates not-null
constraint
Previously, I had noticed that it was selecting from the sequence
(even though I hadn't defined it) before it did the insert. Now it
looks like it's just trying to insert NULL. IMHO neither of those are
correct. It should insert without the primary key column(s) if the PK
column(s) has not been set and there is no sequence for the column
(or a sequence has optional=True).
Note, the above code works if I explicitly define the sequence in the
SA Table.
~ Daniel
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
Sqlalchemy-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users