gpt4 book ai didi

python - SQLachemy 模型的 NOT NULL 约束失败

转载 作者:行者123 更新时间:2023-12-01 04:12:08 26 4
gpt4 key购买 nike

我最近开始使用数据库。我正在尝试使用 SQLalchemy 建立一个模型。 models.py和database.py如下所示:

#models.py

import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Expense(Base):
__tablename__ = 'expense'
id = sa.Column(sa.BigInteger, primary_key=True)
username = sa.Column(
sa.String,
info={'label': 'Name'},
nullable=False
)
def __init__(self, username):
self.username = username

def __repr__(self):
return '<User %r>' % (self.username)

#database.py

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from models import Base, Expense


def init_db():
engine = create_engine('sqlite:///test.db')
Base.metadata.create_all(engine)
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
session = DBSession()

new_entry = Expense(username="noobie")
session.add(new_entry)
session.commit()

init_db()

我在 python3 上运行这些,当我运行 database.py 时,我得到

sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) NOT NULL constraint failed: expense.id [SQL: 'INSERT INTO expense (username) VALUES (?)'] [parameters: ('noobie',)]

一个回复 here建议使用 sqlite_autoincrement=True 可以解决问题,但它对我的不起作用。我认为分配主键时问题发生在 SQLite3 和 sqlalchemy 之间......我也不太清楚。请帮助这个可怜的菜鸟,谢谢!

最佳答案

我认为原因可能是sqlite中不允许使用BIGINT具有自动增量的主键。看到这个:Does BIGINT auto increment work for SQLAlchemy with sqlite?

关于python - SQLachemy 模型的 NOT NULL 约束失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34783441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com