在SQLAlchemy中使用BigInteger吗?

11 投票
1 回答
26466 浏览
提问于 2025-04-16 14:00

如果格式不好,我先说声抱歉;现在已经很晚了。

简单来说,我在用Python和SQLAlchemy。我想把一个类映射到PostgreSQL数据库中的一个表,使用的是对象关系映射,声明式风格

根据SQLAlchemy关于数据类型的文档,我应该可以使用BigInteger类型来表示数据库中可能很大的整数,特别是因为我知道PostgreSQL支持BIGINT数据类型

所以,我尝试这样声明我的类:

import sqlalchemy
from sqlalchemy import Column, BigInteger, Text, Sequence, Boolean
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Account(Base):
    __tablename__ = 'accounts'
    __metadata__ = Base.metadata

    id = Column(BigInteger, Sequence('id_seq'), unique=True, nullable=False)
    email = Column(Text(32), unique=True, nullable=False)

    def __init__(self, email):
        self.email = email

但是,当我试图使用这个文件时,我遇到了以下问题:

Traceback (most recent call last):
  File "sqltest02.py", line 9, in <module>
     from account import Account
  File "/home/pdusen/prog/account.py", line 2, in <module>
    from sqlalchemy import Column, BigInteger, Text, Sequence, Boolean
ImportError: cannot import name BigInteger

所以,根据SQLAlchemy的文档,BigInteger类型是存在的,但在Python中却显示不存在。我是不是漏掉了什么?

谢谢大家的回答。

1 个回答

11

这个功能至少从 SQL Alchemy 0.6 版本开始就支持了。正如评论中提到的,实际的问题是使用的版本太旧了。

撰写回答