Oops, yes of course.
Sorry, I copied the error message from the wrong terminal.
The relevant error message would be this one:
Traceback (most recent call last):
File "demo.py", line 51, in <module>
result = Person.query().all()
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/orm/
query.py", line 1186, in all
return list(self)
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/orm/
query.py", line 1280, in __iter__
return self._execute_and_instances(context)
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/orm/
query.py", line 1283, in _execute_and_instances
result = self.session.execute(querycontext.statement,
params=self._params, mapper=self._mapper_zero_or_none())
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/orm/
session.py", line 755, in execute
clause, params or {})
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/engine/
base.py", line 824, in execute
return Connection.executors[c](self, object, multiparams, params)
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/engine/
base.py", line 874, in _execute_clauseelement
return self.__execute_context(context)
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/engine/
base.py", line 896, in __execute_context
self._cursor_execute(context.cursor, context.statement,
context.parameters[0], context=context)
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/engine/
base.py", line 950, in _cursor_execute
self._handle_dbapi_exception(e, statement, parameters, cursor,
context)
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/engine/
base.py", line 931, in _handle_dbapi_exception
raise exc.DBAPIError.instance(statement, parameters, e,
connection_invalidated=is_disconnect)
sqlalchemy.exc.OperationalError: (OperationalError) no such table:
person u'SELECT address.person_id AS address_person_id, person.id AS
person_id, person.name AS person_name, person.created AS
person_created, address.created AS address_created, address.id AS
address_id, address.street AS address_street, address.number AS
address_number \nFROM person JOIN address ON address.person_id =
person.id' []
On Apr 16, 4:22 pm, Michael Bayer <[email protected]> wrote:
> that error is just a table already exists. pass checkfirst=True to
> your table.create() call.
>
> On Apr 16, 2009, at 6:21 AM, JanW wrote:
>
>
>
> > Hi all,
>
> > I've playing around with SQLAlchemy for a few months, being very happy
> > with the results.
> > As my adventures are getting gradually more complex I feel I've
> > finally run into a problem where I am just stuck, so any help from the
> > SQLAlchemy community would be greatly appreciated.
>
> > In essence I am trying to combine "Vertical Partitioning" with
> > "Mapping a Class against Multiple Tables". In this case I want to map
> > a class against multiple tables that are located in different
> > databases.
>
> > Below is a minimal version of a script I am trying to build. In my
> > actual project the situation is more complex and I'm not really
> > working with persons and addresses (they would fit better in the same
> > database). This is just a toy example to illustrate my problem.
>
> > I suspect my problem lies in my "j = join(...)" statement. "join()"
> > probably expects tables from the same database but I have no idea how
> > to tie this in with vertical partitioning.
>
> > It could very well be that I'm trying to take this too far and that I
> > should just work with different classes all tied to their own database
> > and then implement the logic between the classes separately.
>
> > Any ideas?
> > Many thanks,
>
> > Jan.
>
> > ====== dummy code:
> > from datetime import datetime
>
> > from sqlalchemy import *
> > from sqlalchemy.orm import *
>
> > # Define SQLite databases
> > person_engine = create_engine('sqlite:///person_db.sqlite')
> > address_engine = create_engine('sqlite:///address_db.sqlite')
>
> > # Define database structure
> > metadata=MetaData()
> > person_table = Table(
> > 'person', metadata,
> > Column('id', Integer, primary_key=True),
> > Column('name', Text),
> > Column('created', DateTime, default=datetime.now),
> > )
> > address_table = Table(
> > 'address', metadata,
> > Column('id', Integer, primary_key=True),
> > Column('street', Text),
> > Column('number', Integer),
> > Column('person_id', Integer, index=True),
> > Column('created', DateTime, default=datetime.now),
> > )
> > person_table.create(bind=person_engine)
> > address_table.create(bind=address_engine)
>
> > # Session, 2 tables bound to different engine
> > Session = scoped_session(sessionmaker(binds={
> > person_table: person_engine,
> > address_table: address_engine,
> > }
> > ))
> > session = Session()
>
> > # 1 Class should map information from 2 databases
> > class Person(object):
> > pass
>
> > # Map Person class to 2 tables in different databases
> > j = join(person_table, address_table,
> > address_table.c.person_id==person_table.c.id)
> > person_mapper = Session.mapper(
> > Person,
> > j,
> > properties = {
> > 'person_id': [address_table.c.person_id, person_table.c.id]
> > }
> > )
>
> > # database is empty, so don't expect any results
> > result = Person.query().all()
>
> > ====== resulting error:
> > Traceback (most recent call last):
> > File "demo.py", line 26, in <module>
> > person_table.create(bind=person_engine)
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/
> > schema.py", line 386, in create
> > self.metadata.create_all(bind=bind, checkfirst=checkfirst, tables=
> > [self])
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/
> > schema.py", line 1765, in create_all
> > bind.create(self, checkfirst=checkfirst, tables=tables)
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/engine/
> > base.py", line 1129, in create
> > self._run_visitor(self.dialect.schemagenerator, entity,
> > connection=connection, **kwargs)
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/engine/
> > base.py", line 1158, in _run_visitor
> > visitorcallable(self.dialect, conn, **kwargs).traverse(element)
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/sql/
> > visitors.py", line 89, in traverse
> > return traverse(obj, self.__traverse_options__,
> > self._visitor_dict)
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/sql/
> > visitors.py", line 200, in traverse
> > return traverse_using(iterate(obj, opts), obj, visitors)
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/sql/
> > visitors.py", line 194, in traverse_using
> > meth(target)
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/sql/
> > compiler.py", line 797, in visit_metadata
> > self.traverse_single(table)
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/sql/
> > visitors.py", line 79, in traverse_single
> > return meth(obj)
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/sql/
> > compiler.py", line 836, in visit_table
> > self.execute()
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/engine/
> > base.py", line 1812, in execute
> > return self.connection.execute(self.buffer.getvalue())
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/engine/
> > base.py", line 824, in execute
> > return Connection.executors[c](self, object, multiparams, params)
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/engine/
> > base.py", line 888, in _execute_text
> > return self.__execute_context(context)
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/engine/
> > base.py", line 896, in __execute_context
> > self._cursor_execute(context.cursor, context.statement,
> > context.parameters[0], context=context)
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/engine/
> > base.py", line 950, in _cursor_execute
> > self._handle_dbapi_exception(e, statement, parameters, cursor,
> > context)
> > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> > python2.5/site-packages/SQLAlchemy-0.5.2-py2.5.egg/sqlalchemy/engine/
> > base.py", line 931, in _handle_dbapi_exception
> > raise exc.DBAPIError.instance(statement, parameters, e,
> > connection_invalidated=is_disconnect)
> > sqlalchemy.exc.OperationalError: (OperationalError) table person
> > already exists '\nCREATE TABLE person (\n\tid INTEGER NOT NULL, \n
> > \tname TEXT, \n\tcreated TIMESTAMP, \n\tPRIMARY KEY (id)\n)\n\n' ()
>
>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---