python - SQLAlchemy:带有 GENERATED ALWAYS AS 的 MySQL 列 DDL

标签 python mysql sqlalchemy

我正在尝试使用 sqlalchemy orm (MySQL) 复制此列:

`line_price_taxed` 小数(20,4) 始终生成为 ((`quantity` * `unit_price_taxed`)) 存储,

到目前为止我的尝试是:

line_price_taxed = Column(DECIMAL(20, 4), server_default=text('''GENERATED ALWAYS AS ((`quantity` * `unit_price_taxed`)) STORED'''), index=True)

但我收到此错误: 1064, "您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册,了解在 'DEFAULT GENERATED ALWAYS AS ((`quantity` * `unit_price_taxed`)) STORED 附近使用的正确语法

有没有办法将原始 SQL 传递到 sqlalchemy ORM 模型中?

最佳答案

根据 SQLAlchemy 文档,如果您使用的版本高于 1.3.11

您可以使用计算 例如,

from sqlalchemy import Column, Integer, Computed

line_price_taxed = Column(DECIMAL(20, 4), Computed("quantity * unit_price_taxed"), index=True)

教程可以从 SQLAlchemy Computed (GENERATED ALWAYS AS) Columns 找到

关于python - SQLAlchemy:带有 GENERATED ALWAYS AS 的 MySQL 列 DDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57596603/

相关文章:

python - 使用 SQLAlchemy 从反射表中删除行

python - 在 GNU/Linux 中安装 python 模块

python - 使用 python 的谷歌应用程序引擎中的服务器内部错误

python - 是否可以在不指定数据库的情况下使用 SQLAlchemy 连接到 postgres 服务器?

python - 如何查询表的所有行

c++ - sqlbindparameter 未用于所有参数 - mysql 和 C++

python - functools reduce 就地修改原始数据框

python - 需要一个线程安全的异步消息队列

MySQL:计算子组中的百分比

mysql - 如何在 MySQL 中编写一个在调用时显示两条消息的存储过程