【问题标题】:SqlAlchemy Continuum: history and transaction tables are not createdSqlAlchemy Continuum:未创建历史和事务表
【发布时间】:2019-05-03 00:50:33
【问题描述】:

我正在尝试将 sqlalchemy-continuum 版本控制集成到使用 flask-sqlalchemy 的现有应用程序中。

我有一个__versioned__ = {} 用于我想要版本化的模型,例如:

class User(Base):
    __versioned__ = {}
    __tablename__ = 'user'

我正在尝试如下初始化 sqlalchemy-continuum:

from flask_sqlalchemy import SQLAlchemy
from sqlalchemy_continuum import make_versioned
from sqlalchemy.orm import configure_mappers

class SQLOrm():
    def __init__(self):
        if not hasattr(self, 'orm'):
            make_versioned(user_cls=None)
            self.orm = SQLAlchemy()
            configure_mappers()

    # ... 

db_orm = SQLOrm()

但是没有创建事务表和历史表。我可以看到 continuum 正在尝试创建记录,但没有表:

LINE 1: INSERT INTO transaction (issued_at, id, remote_addr) VALUES ...
                     ^
[SQL: "INSERT INTO transaction (issued_at, id, remote_addr) VALUES (%(issued_at)s, nextval('transaction_id_seq'), %(remote_addr)s) RETURNING transaction.id"] [parameters: {'issued_at': datetime.datetime(2019, 5, 3, 0, 46, 39, 699358), 'remote_addr': None}] (Background on this error at: http://sqlalche.me/e/f405)

我初始化它的方式有问题。知道我做错了什么吗?

【问题讨论】:

    标签: python flask sqlalchemy flask-sqlalchemy sqlalchemy-continuum


    【解决方案1】:

    您必须在使用sqlalchemy-continuum 之前创建表。 您可以通过脚本创建表,使用 db.create_all() 创建表,或者进行 alembic 迁移。

    【讨论】:

      猜你喜欢
      • 2015-10-27
      • 2011-08-30
      • 2017-06-29
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多