Mr *_*our 5 python sqlalchemy flask
我试图在我的sqlAlchemy基类中添加一个简单的字符串/整数数组类型列,但是没有运气。每次它给我一个例外,那就是它无法呈现数组类型。我不明白为什么。我想念什么吗?
这是我的课:
class Item_detail(Base):
__tablename__ = 'item_detail'
id = Column(Integer, primary_key=True)
detail_label = Column(String)
images_link = Column(ARRAY(String()), default=[])
engine = create_engine('sqlite:///bifi.db')
from sqlalchemy.orm import sessionmaker
session = sessionmaker()
session.configure(bind=engine)
Base.metadata.create_all(engine)
Run Code Online (Sandbox Code Playgroud)
但是然后,sqlalchemy向我抛出:
File "/usr/local/lib/python2.7/site-packages/sqlalchemy/sql/visitors.py", line 79, in _compiler_dispatch
raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.CompileError: (in table 'item_detail', column 'images_link'): Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x10f9aa210> can't render element of type <class 'sqlalchemy.dialects.postgresql.base.ARRAY'>
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我不能渲染它。我尝试使用其他数组类型没有运气。
小智 4
SQLAlchemy 的 ARRAY 目前可以在 PostageSQL 后端使用(SQLAlchemy 1.3.18)。“sqlalchemy/sql/sqltypes.py”上写的 ARRAY 的描述如下:
该类型是所有 ARRAY 操作的基础。然而,目前只有 PostgreSQL 后端支持 SQLAlchemy 中的 SQL 数组。
所以,如果你想使用SQLAlchemy的ARRAY,你应该安装PostageSQL和psycopg2。然后创建引擎如下。
DATABASE = 'postgresql'
USER = 'postgres'
PASSWORD = 'your password'
HOST = 'localhost'
PORT = '5432'
DB_NAME = 'postgres'
engine = create_engine(f'postgresql://{USER}:{PASSWORD}@{HOST}:{PORT}/{DB_NAME }')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1370 次 |
| 最近记录: |