1

根据这个问题,SQLAlchemy - 用于测试的 SQLite 和用于开发的 Postgresql - 如何移植?

我意识到,(以上)共识是不要使用未在生产中使用的数据库进行测试

我想抽象对sqlalchemy的部分索引支持,这样我就可以使用 Postgres 或 Sqlite。

我已经看到了,PostgreSQL我可以使用

    Index('only_one_active_invoice', 
          invoice_id, active,
          unique=True,
          postgresql_where=(active)
    ),

但我看到https://sqlite.org/partialindex.html也支持部分索引sqlite

是否有某种对sqlalchemy的通用部分索引支持,我的模块可以用于 postgres 或 sqlite 数据库?

4

1 回答 1

1

根据doc ,没有通用的方法

你应该使用 sqlite

idx = Index('test_idx1', tbl.c.data,
            sqlite_where=and_(tbl.c.data > 5, tbl.c.data < 10))

对于postgres:

idx = Index('my_index', my_table.c.id, 
            postgresql_where=my_table.c.value > 10)

在您的情况下,您可以检查数据库引擎并使用 kwargs 初始化索引

于 2017-07-21T10:19:02.540 回答