2011-02-18 38 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)