2011-02-18 44 views
2

我最近做出了从现在开始为我的项目使用金字塔(python web框架)的决定。原始MySQL与SQLAlchemy使用金字塔框架

我也决定使用SQLalchemy,我想使用原始MySQL(个人原因),但仍然保持ORM功能。

在models.py代码的第一部分内容:

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension())) 
Base = declarative_base() 

现在,从这里我怎么exectue一个查询使用原始的MySQL CREATE TABLE。

传统SQLAlchemy的方法是:

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 

回答

4
DBSession.execute('CREATE TABLE ....') 

看一看sqlalchemy.text()的参数化查询。

+0

感谢您的答复马可。我曾尝试以下: `DBSession.execute( “” “ CREATE TABLE ..... ”“” )` 并收到以下错误:UnboundExecutionError:无法 找到绑定的SQL配置表达式或这个Session – sidewinder 2011-02-19 09:48:11

3

我自己有偏见的建议是使用http://pypi.python.org/pypi/khufu_sqlalchemy来设置sqlalchemy引擎。

然后一个金字塔里面查看你可以这样做:

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

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

在你的代码段,这样做是

pg = Page() 

DBSession.add(pg) 

添加为你想从你的片段添加e.g名称和数据的所有表单元素。

最终代码将类似于:

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