我继承了一个使用SQLAlchemy的Pylons应用程序.我对SQLAlchemy一无所知,对Pylons知之甚少:)
我需要在应用程序中运行一些原始SQL.SQLAlchemy目前似乎以下列方式工作(示例代码):
import myapp.model as model
model.Session.query(model.KeyValue) # existing code
.join(model.Key)
.filter(model.Key.name == name)
).count() == 0, name
Run Code Online (Sandbox Code Playgroud)
如何让它运行原始SQL?我看到我需要一个execute()语句,但我该如何运行呢?以下两个都失败了:
model.Session.execute('create table hello_world;')
model.Connection.execute("""
create table hello_world;
""")
Run Code Online (Sandbox Code Playgroud)
什么是魔术调用?现有代码中没有对Connection对象的引用,我不知道如何创建一个.
connection = model.Session.connection()
Run Code Online (Sandbox Code Playgroud)
然后你可以发出你的查询:
connection.execute('create table hello_world;')
Run Code Online (Sandbox Code Playgroud)
请注意,在Pylons中,model.Session不是sqlalchemy.orm.session.Session 类.它是sqlalchemy.orm.scoping.ScopedSession的一个实例.这就是它在model.meta模块中的创建方式:
Session = scoped_session(sessionmaker())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3546 次 |
| 最近记录: |