使用SQLAlchemy的Pylons应用程序中的原始SQL?

使用SQLAlchemy的Pylons应用程序中的原始SQL?,sqlalchemy,pylons,Sqlalchemy,Pylons,我继承了一个使用SQLAlchemy的Pylons应用程序。我对炼金术一无所知,对塔架知之甚少:) 我需要在应用程序中运行一些原始SQL。SQLAlchemy目前似乎以以下方式工作(示例代码): 如何让它运行原始SQL?我知道我需要一个execute()语句,但我到底要如何运行它呢?以下两项都失败了: model.Session.execute('create table hello_world;') model.Connection.execute(""" create table hello

我继承了一个使用SQLAlchemy的Pylons应用程序。我对炼金术一无所知,对塔架知之甚少:)

我需要在应用程序中运行一些原始SQL。SQLAlchemy目前似乎以以下方式工作(示例代码):

如何让它运行原始SQL?我知道我需要一个execute()语句,但我到底要如何运行它呢?以下两项都失败了:

model.Session.execute('create table hello_world;')
model.Connection.execute("""
create table hello_world;
""")

什么是魔法召唤?现有代码中没有对连接对象的引用,我也不知道如何创建连接对象

我的第一个想法是建议尝试连接实例的execute()方法,而不是像示例代码所建议的那样尝试类本身的execute()方法


您正在断开吗?

您可以通过以下方式获得会话使用的连接:

然后,您可以发出查询:

connection.execute('create table hello_world;')
请注意,在Pylons模型中.Session不是类。这是一个例子。在model.meta模块中就是这样创建的:

Session = scoped_session(sessionmaker())

你认为我应该尝试创建一个显式的连接吗?我只是想知道是否有一种聪明的方法,因为我似乎继承了试图做一些聪明事情的代码。我会尝试的第一件事是创建一个显式连接,是的。如果这不起作用,那么肯定会发生一些过于聪明的事情。祝您继承的代码好运。
connection.execute('create table hello_world;')
Session = scoped_session(sessionmaker())