【发布时间】:2018-03-01 18:42:50
【问题描述】:
我正在使用 Flask-SQLAlchemy 作为 ORM 编写一个带有 Flask 的 Web 服务器。为了简单起见,我想使用 SQLite3 并将服务器的状态存储在一个简单的文件中。
我的数据模型需要处理布尔向量(在创建数据库时已知的固定大小),但似乎 SQLAlchemy ARRAY 类型并未完全针对 SQLite3 后端实现。
这是一个在 Python 交互式 shell 中运行的简单程序,用于演示该问题:
>>> from flask import Flask
>>> from flask_sqlalchemy import SQLAlchemy
>>> app = Flask(__name__)
>>> app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'
>>> db = SQLAlchemy(app)
>>> class Sample(db.Model):
... id = db.Column(db.Integer, primary_key=True)
... task_done = db.Column(db.ARRAY(db.Boolean, dimensions=10))
...
>>> db.create_all()
Traceback (most recent call last):
File "/lib/python3/sqlalchemy/sql/visitors.py", line 77, in _compiler_dispatch
meth = getter(visitor)
AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_ARRAY'
那么,使用布尔值列表的最佳解决方法是什么?我已经尝试使用每个字符代表True 或False 的字符串,但我觉得这很不令人满意...
还有更好的方法吗?
编辑:我已经找到了这个blog post。但是,对于这么一点点来说,它似乎过于复杂(不过,我对这个问题的了解可能有点错误)。
【问题讨论】:
标签: python flask sqlite sqlalchemy