我有一个在我的 Python 代码之外定义的 MySQL 数据库。我正在使用反射将其放入 SQLAlchemy,因此我没有任何可以修改的类定义。我不必担心失去精度,并且我在 Python 中对结果进行了一些算术运算,因此我宁愿不必手动将一堆值转换为浮点数或十进制数。
import sqlalchemy as sa
eng = sa.create_engine("mysql+pymysql://user:passwd@server/database")
eng.execute("create table if not exists foo (x double not null)")
eng.execute("insert into foo (x) values (0.1)")
md = sa.MetaData(bind=eng)
md.reflect()
foo = md.tables["foo"]
res = eng.execute(foo.select())
row = res.fetchone()
print(type(row.x))
print(repr(foo.c.x.type))
输出:
<class 'decimal.Decimal'>
DOUBLE