擅长:python、mysql、java
<p>我不是SQLAlchemy专家,但我确实在SLQAlchemy中使用了Pylons Pyramid,这就是我从活动中访问userid的方式(下面只是为了展示这个想法):</p>
<pre><code>from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import (
scoped_session,
sessionmaker,
)
from zope.sqlalchemy import ZopeTransactionExtension
from pyramid.threadlocal import get_current_request
DBSession = scoped_session(
sessionmaker(extension=ZopeTransactionExtension()),
scopefunc=get_current_request)
Base = declarative_base()
# Define your tables
@event.listens_for(Base, "after_insert", propagate=True)
def user_after_insert(mapper, connection, target):
try:
user_id = DBSession.registry.scopefunc().userid
except AttributeError:
# most likely initializedb script is being called
</code></pre>