OK what's idm_rw.py, and is it the only module in the app that specifies a table named "attribute_config"? is idm_rw.py always imported right when the app starts up? or is there some kind of loading going on ?
On Oct 21, 2013, at 9:51 PM, Joseph Casale <jcas...@gmail.com> wrote: > Hey Michael, > For reasons beyond my control at the moment, logging was utterly butchered in > a completely > incomprehensible means by another developer. > > Traceback (most recent call last): > File "D:\app_folder\plugin\idm_rw.py", line 6, in <module> > from idm_config import Attribute, Session > File "D:\app_folder\include\idm_config.py", line 478, in <module> > class PortalConfig(Base, EnvironmentMixin): > File "D:\Python33\lib\site-packages\sqlalchemy\ext\declarative\api.py", > line 50, in __init__ > _as_declarative(cls, classname, cls.__dict__) > File "D:\Python33\lib\site-packages\sqlalchemy\ext\declarative\base.py", > line 222, in > _as_declarative **table_kw) > File "D:\Python33\lib\site-packages\sqlalchemy\schema.py", line 319, in > __new__ "existing Table object." % key) > > sqlalchemy.exc.InvalidRequestTable 'attribute_config' is already > defined for this MetaData instance. Specify 'extend_existing=True' to > redefine > options and columns on an existing Table object. > > I think thats what it looked like before he had his way:) > > Thanks! > jlc > > > On Mon, Oct 21, 2013 at 3:25 PM, Michael Bayer <mike...@zzzcomputing.com> > wrote: > how about a stack trace? > > > On Oct 21, 2013, at 4:11 PM, Joseph Casale <jcas...@gmail.com> wrote: > >> 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. > > > > -- > 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.
signature.asc
Description: Message signed with OpenPGP using GPGMail