sqlalchemy.exc.DataError:(psycopg2.DataError)整数超出范围

abi*_*tio 9 python postgresql sqlalchemy

我正在尝试通过 SQLAchemy ORM 将数据保存到 postgresql 中。我遇到了以下错误:

sqlalchemy.exc.DataError:(psycopg2.DataError)整数超出范围

我已经指出了出错的地方。我有一个很大的数字,即2468432255.0。如果我更改为较小的数字,例如 468432255.0,则它可以工作。

让我困惑的是:我将列定义为volume = Column(Numeric)。据我了解,Numeric 应该能够处理这么大的数字。此外,我尝试了其他数据类型,如 BigInt 等......它们都给了我同样的错误。

任何想法?

谢谢成俊

Ric*_*evi 2

您可以在本地代码的 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是数据库中当前存在的列