- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个Pyramid使用 SQLAlchemy 执行 CRUD 的应用程序通过pyramid_basemodel 。一切看起来都很顺利。
然后我安装了 pip SQLAlchemy-Continuum ,提供某些对象的历史记录。我所做的配置就是对 models.py 文件进行以下更改:
import sqlalchemy as sa
from sqlalchemy import (event, Column, Index, Integer, Text, String, Date, DateTime, \
Float, ForeignKey, Table, Boolean,)
from sqlalchemy.orm import (relationship, backref, mapper, scoped_session, sessionmaker,)
from pyramid_basemodel import Base, BaseMixin, Session, save
from pyramid_fullauth.models import User
from sqlalchemy_continuum import make_versioned
from colanderalchemy import setup_schema
from zope.sqlalchemy import ZopeTransactionExtension
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
event.listen(mapper, 'mapper_configured', setup_schema)
# Continuum setup
make_versioned()
# FOR EACH VERSIONED MODEL I ADD __versioned__ = {} at the start of each model def. Eg:
class Thing(Base):
__versioned__ = {}
__tablename__ = 'thing'
id = sa.Column(Integer, primary_key=True)
related_id = sa.Column(Integer, ForeignKey('OtherThing.id'))
other_thing = sa.orm.relationship("OtherThing", backref="thing")
description = sa.Column(String(length=100))
a_date = sa.Column(Date)
some_hours = sa.Column(Integer)
b_date = sa.Column(Date)
more_hours = sa.Column(Integer)
sa.orm.configure_mappers()
(抱歉,导入有些多余;我决定完全遵循 Continuum 示例并将 sqlalchemy 导入为 sa
,并切换到在我版本化的模型中使用该表示法。我可能会这样做也可能基于对不同教程的一知半解而做出愚蠢的、猴子看猴子做的事情。)
此设置允许我运行 alembic revision --autogenerate
并在数据库中生成 ModelHistory 表,但是当我转到某些读取当前版本化模型的页面时,它们会给出错误
sqlalchemy.exc.UnboundExecutionError: This session is not bound to a single Engine or Connection, and no context was provided to locate a binding.
由于某种原因,它读取以相同方式添加的一个模型,但随后尝试更新它失败并出现相同的错误。
我的猜测是,我需要配置 Continuum 用于 SQLAlchemy session 的任何内容,以指向 Pyramid 中配置的现有 session ,但我不确定。我暖和了吗?
最佳答案
当您调用时,您正在生成 session :
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
但不将其绑定(bind)到引擎。您的 Pyramid 模板,pyramid_basemodel,已经为您生成一个 session 并将其绑定(bind)到引擎。
尝试删除 DBSession 并使用从 Pyramid_basemodel 导入的 Session。
关于python - SQLAlchemy-连续体和 Pyramid : UnboundExecutionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31826272/
注意:这是在 SQLAlchemy 0.5.7 中。看来这是不可能的,因为“惰性”不适用于一对一映射。如果确实如此并且我弄错了,请张贴您的答案。 我有以下方法,它应该返回父类是 Parent 的任何类
我有一个Pyramid使用 SQLAlchemy 执行 CRUD 的应用程序通过pyramid_basemodel 。一切看起来都很顺利。 然后我安装了 pip SQLAlchemy-Continuu
我正在尝试使用SQLAlchemy Migrate迁移表,但出现此错误: sqlalchemy.exc.UnboundExecutionError: Table object 'responsible
我目前在我的 Cherrypy 项目中使用 SQLAlchemy 作为 ORM。当我在cherrypy嵌入式网络服务器上时,不会发生我遇到的错误,但仅来 self 的Nginx部署。 在带有 Ngin
我创建了一个使用 SQLAlchemy 的类: class DbAbsLayer(object): def __init__(self): self.setConnection
我是一名优秀的程序员,十分优秀!