Works for me (once I add metadata.create_all(bind=engine) ) ... possibly you have an old SQLite that doesn't do the auto-incrementing primary key thing?
- G. On Wed, Feb 18, 2009 at 2:26 PM, Marcin Krol <mrk...@gmail.com> wrote: > > Hello, > > I just started learning sqlalchemy, my version is 0.5.2, I'm reading the > tutorial (Object Relational Tutorial) and produced this code: > > > from sqlalchemy import create_engine, Table, Column, Integer, String, > MetaData, ForeignKey > from sqlalchemy.orm import mapper, sessionmaker > > engine = create_engine('sqlite:////test.sqlite',echo=True) > > metadata = MetaData() > > users_table = Table('users', metadata, > Column('id',Integer,primary_key=True), > Column('name',String), > Column('fullname',String), > Column('password',String)) > > class User(object): > def __init__(self,name,fullname,password): > self.name = name > self.fullname = fullname > self.password = password > > > > mapper(User, users_table) > > ed_user = User('ed','Ed Jones','sdffa') > > Session=sessionmaker(bind=engine) > session=Session() > > session.add(ed_user) > session.commit() > > our_user=session.query(User).filter_by(name='ed').first() > > res = ed_user is our_user > print res > > > However, it fails due to exception: > > Traceback (most recent call last): > File "C:/Python26/userssqa.py", line 31, in <module> > session.commit() > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\orm\session.py", > line 673, in commit > self.transaction.commit() > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\orm\session.py", > line 378, in commit > self._prepare_impl() > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\orm\session.py", > line 362, in _prepare_impl > self.session.flush() > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\orm\session.py", > line 1347, in flush > self._flush(objects) > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\orm\session.py", > line 1417, in _flush > flush_context.execute() > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\orm\unitofwork.py", > line 244, in execute > UOWExecutor().execute(self, tasks) > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\orm\unitofwork.py", > line 707, in execute > self.execute_save_steps(trans, task) > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\orm\unitofwork.py", > line 722, in execute_save_steps > self.save_objects(trans, task) > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\orm\unitofwork.py", > line 713, in save_objects > task.mapper._save_obj(task.polymorphic_tosave_objects, trans) > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\orm\mapper.py", > line 1352, in _save_obj > c = connection.execute(statement.values(value_params), params) > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\engine\base.py", > line 824, in execute > return Connection.executors[c](self, object, multiparams, params) > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\engine\base.py", > line 874, in _execute_clauseelement > return self.__execute_context(context) > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\engine\base.py", > line 896, in __execute_context > self._cursor_execute(context.cursor, context.statement, > context.parameters[0], context=context) > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\engine\base.py", > line 950, in _cursor_execute > self._handle_dbapi_exception(e, statement, parameters, cursor, context) > File > > "c:\python26\lib\site-packages\sqlalchemy-0.5.2-py2.6.egg\sqlalchemy\engine\base.py", > line 931, in _handle_dbapi_exception > raise exc.DBAPIError.instance(statement, parameters, e, > connection_invalidated=is_disconnect) > IntegrityError: (IntegrityError) users.id may not be NULL u'INSERT INTO > users (name, fullname, password) VALUES (?, ?, ?)' ['ed', 'Ed Jones', > 'sdffa'] > > This is pretty obvious, 'id' integer column has not been filled. But I > have no idea how to remedy this, since this seems to be dependent on > smth in the guts of sqlalchemy. Help! > > Regards, > mk > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---