abi*_*tio 9 python postgresql sqlalchemy
我正在尝试通过 SQLAchemy ORM 将数据保存到 postgresql 中。我遇到了以下错误:
sqlalchemy.exc.DataError:(psycopg2.DataError)整数超出范围
我已经指出了出错的地方。我有一个很大的数字,即2468432255.0。如果我更改为较小的数字,例如 468432255.0,则它可以工作。
让我困惑的是:我将列定义为volume = Column(Numeric)。据我了解,Numeric 应该能够处理这么大的数字。此外,我尝试了其他数据类型,如 BigInt 等......它们都给了我同样的错误。
任何想法?
谢谢成俊
您可以在本地代码的 SQlAlchemy 架构中定义任何您想要的内容,但这并不意味着您将数据插入其中的数据库会遵守它。
SQLAlchemy 中定义的模式由代码本身强制执行。
虽然数据库有自己的模式,但当您尝试插入/删除等时也会强制执行它(有自己的约束等),但 SQLAlchemy 对此一无所知(直到您声明它)。
在我看来,您可以简单地自动生成 SQLAlchemy 模式 - 它将从数据库模式中获取数据库列名称和类型。
from sqlalchemy import create_engine
class SomeTable(Base):
"""
Class, that represents SomeTable
"""
__tablename__ = "my_table_in_db"
__table__ = Table(__tablename__, Base.metadata,
autoload=True,
autoload_with=create_engine(DB_URL))
Run Code Online (Sandbox Code Playgroud)
创建SomeTable
对象后,您只需通过以下方式即可访问其列
SomeTable.colname
Run Code Online (Sandbox Code Playgroud)
colname
是数据库中当前存在的列
归档时间: |
|
查看次数: |
10387 次 |
最近记录: |