【发布时间】:2020-04-05 02:19:48
【问题描述】:
我试图了解为什么我会收到以下对象的 sql 错误。 我在 heroku 上使用 PostGresSql 数据库
class Member(BASE):
__tablename__ = "members"
name = Column(String)
discord_id = Column(BigInteger, primary_key=True,nullable=False)
role = Column(String, ForeignKey('roles.name'))
nick = Column(String)
rs_runs = relationship("RSRun",secondary='member_on_rs_run')
def __init__(self,name,discord_id,nick="" ):
self.name = name
self.discord_id = discord_id
self.nick = nick
class RSRun(BASE):
__tablename__ = "rs_runs"
id = Column(Integer, primary_key=True, nullable=False)
level = Column(String)
dtg = Column(DateTime)
members = relationship("Member",secondary='member_on_rs_run')
class MemberOnRSRun(BASE):
__tablename__ = "member_on_rs_run"
member_id = Column(BigInteger, ForeignKey('members.discord_id'),primary_key = True)
run_id = Column(Integer,ForeignKey('rs_runs.id'),primary_key=True)
我遇到的错误在这里
sqlalchemy.exc.DataError: (psycopg2.errors.NumericValueOutOfRange) integer out of range
[SQL: INSERT INTO members (name, discord_id, role, nick) VALUES (%(name)s, %(discord_id)s, %(role)s, %(nick)s)]
[parameters: {'name': '', 'discord_id': 126793648221192192, 'role': None, 'nick': ''}]
我已经检查过,discord_id 在 PostGres BigInt 的合法范围内,这是我假设我使用 sqlalchemy Biginteger 列得到的。但它一直告诉我它超出了整数的范围。显然我想使用与 Discord 相同的 ID,因为这是 Discord 上成员的标识符。
【问题讨论】:
标签: python-3.x heroku sqlalchemy heroku-postgres