Python 原始MySQL和使用金字塔框架的SQLAlchemy

Python 原始MySQL和使用金字塔框架的SQLAlchemy,python,sqlalchemy,pyramid,Python,Sqlalchemy,Pyramid,我最近决定从现在开始在我的项目中使用Pyramid(PythonWeb框架) 我还决定使用SQLalchemy,我想使用原始MySQL(个人原因),但仍然保留ORM特性 models.py中的第一部分代码如下: DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension())) Base = declarative_base() 现在,我如何使用原始MySQL执行CREATETABLE查询 传统的炼金术方

我最近决定从现在开始在我的项目中使用Pyramid(PythonWeb框架)

我还决定使用SQLalchemy,我想使用原始MySQL(个人原因),但仍然保留ORM特性

models.py中的第一部分代码如下:

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
Base = declarative_base()
现在,我如何使用原始MySQL执行CREATETABLE查询

传统的炼金术方法是:

class Page(Base):
  __tablename__ = 'pages'
  id = Column(Integer, primary_key=True)
  name = Column(Text, unique=True)
  data = Column(Text)

def __init__(self, name, data):
    self.name = name
    self.data = data

请查看
sqlalchemy.text()
,了解参数化查询。

我个人的建议是使用设置sqlalchemy引擎

然后在金字塔视图中,您可以执行以下操作:

from khufu_sqlalchemy import dbsession
db = dbsession(request)
db.execute("select * from table where id=:id", {'id':7})

views.py
中,如果要添加表单元素,请首先创建数据库的对象

在您的代码片段中,按照

pg = Page() 
加上

DBSession.add(pg) 
对于要添加的所有表单元素,例如代码段中的名称和数据

最终代码类似于:

    pg = Page()
    name = request.params['name']
    data = request.params['data']
    DBSession.add(pg)

谢谢你的回复,马可。我尝试了以下操作:
DBSession.execute(““CREATE TABLE…..”
并收到以下错误:UnboundExecutionError:找不到SQL表达式或此会话上配置的绑定,您必须调用DBSession.configure(bind=get_engine(…)或类似的东西,但我还没有进入金字塔,也不知道它是如何建立的。我通常在纯sql中创建模式,然后在连接上调用reflect()。。。
    pg = Page()
    name = request.params['name']
    data = request.params['data']
    DBSession.add(pg)