在Pyramid框架中使用SQLAlchemy的原生MySQL

2 投票
3 回答
2126 浏览
提问于 2025-04-16 12:05

我最近决定在我的项目中开始使用Pyramid(一个Python的网页框架)。

我还决定使用SQLalchemy,并且想用原生的MySQL(出于个人原因),但仍然希望保留ORM的功能。

在models.py文件中的第一部分代码是:

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

那么接下来我该如何用原生MySQL执行创建表的查询呢?

传统的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

3 个回答

0

views.py 文件里,如果你要添加表单元素,首先需要创建一个数据库的对象。

在你的代码片段中,可以这样做:

pg = Page() 

然后用下面的方式添加它:

DBSession.add(pg) 

对于你想添加的所有表单元素,比如名字和数据,都是这样做的。

最后的代码看起来会像这样:

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

我个人的建议是使用 http://pypi.python.org/pypi/khufu_sqlalchemy 来设置 sqlalchemy 引擎。

然后在一个 pyramid 视图中,你可以这样做:

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

可以看看 sqlalchemy.text() 这个东西,它可以用来写带参数的查询。

撰写回答