Python 在SQLAlchemy中使用SQLite3时模拟布尔数组

Python 在SQLAlchemy中使用SQLite3时模拟布尔数组,python,flask,sqlite,sqlalchemy,Python,Flask,Sqlite,Sqlalchemy,我正在使用Flask SQLAlchemy作为ORM编写一个带有Flask的web服务器。为了简单起见,我想使用SQLite3并将服务器的状态存储在一个简单的文件中 我的数据模型需要处理布尔向量(在DB创建时已知的固定大小),但是SQLAlchemyARRAY类型似乎没有完全为SQLite3后端实现 下面是Python交互式shell中的一个简单运行,它将演示该问题: >>> from flask import Flask >>> from flask_sql

我正在使用Flask SQLAlchemy作为ORM编写一个带有Flask的web服务器。为了简单起见,我想使用SQLite3并将服务器的状态存储在一个简单的文件中

我的数据模型需要处理布尔向量(在DB创建时已知的固定大小),但是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
,但我发现这很不令人满意

有更好的方法吗


编辑:我已经找到了这个。但是,对于这样一个小问题来说,它似乎太复杂了(尽管,我对这个问题的了解可能是错误的)。

好的,我承认
数组类型对于数据库来说似乎非常好和明显。但是,我发现这不是普通SQL规范中的标准类型。。。事实上,似乎只有PostGreSQL拥有它

因此,我最终没有在我的DB模型中使用
数组
类型。。。这可能是有史以来最糟糕的解决方法,但更符合SQL标准