Hi Michael, I spoke with the developer of the application that launches the plugins I am writing and each python script is run by starting an entirely new process with the interpreter and each plugin.
It should be a clean environment. From the plugins, I simply import which ever tables from the module below that I would need. In the event I am doing something wrong, my code looks like: from os import path from sqlalchemy import ( Column, CheckConstraint, DDL, ForeignKey, Index, Integer, String, create_engine, event ) from sqlalchemy.engine import Engine from sqlalchemy.ext.declarative import declared_attr, declarative_base from sqlalchemy.orm import sessionmaker db_name = path.join('path', 'config', 'sqlite.db') engine = create_engine('sqlite:///{}'.format(db_name), echo=False) Session = sessionmaker(bind=engine, autoflush=False, autocommit=False) Base = declarative_base() @event.listens_for(Engine, 'connect') def set_sqlite_pragma(dbapi_connection, connection_record): cursor = dbapi_connection.cursor() cursor.execute('PRAGMA foreign_keys=ON') cursor.close() table defs... if __name__ == '__main__': Base.metadata.create_all(engine) Thanks so much for the help, jlc On Sun, Oct 20, 2013 at 11:01 PM, Michael Bayer <mike...@zzzcomputing.com>wrote: > the MetaData object holds one Table object per unique name given. If you > use the Table constructor more than once with the same name and the same > MetaData, you get this error. > > That's how the error is caused, then the fact that the error is > "occasional" points strongly to a race condition of some kind, more than > one thread both calling the constructor for Table with the same name. > Patterns that could cause this could be some kind of unsynchronized global > registry or singleton object that when called produces a new Table object. > > The recommended pattern is for Table objects (as well as mapped classes) > to generally be declared at the module level so that these names are > produced only at module import time, which itself should occur before the > application starts any threads in addition to the main application thread. > > > > > On Oct 20, 2013, at 11:04 PM, Joseph Casale <jcas...@gmail.com> wrote: > > I have a module that is imported by several Python scripts run by an > application > that fires up a new interpreter session for each invocation. When not > under load or > running the code manually at the cli things work fine but once the > concurrency > raises and the application starts seeing some load it emits > InvalidRequestError > exceptions on one table. > > After searching I am not sure the results relate to my issue or maybe my > lack > of familiarity with SQLAlchemy has the better of me. > > Any guidance would be greatly appreciated, > jlc > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy+unsubscr...@googlegroups.com. > To post to this group, send email to sqlalchemy@googlegroups.com. > Visit this group at http://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/groups/opt_out.