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.

Reply via email to