我最近开始使用数据库。我正在尝试使用SQLalchemy建立模型。在models.py和database.py显示如下:NOT NULL约束SQLachemy模型失败
#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,我得到
一个响应here表明使用sqlite_autoincrement=True
可以解决问题,但它不适用于我的。我认为在分配主键时SQLite3和sqlalchemy之间会出现问题......我不太清楚。请帮助这个可怜的noobie,谢谢!
嗨@ return-0,你忘了我在开始导入;) –
@AndyK感谢您指出了。不幸的是,这是由于我的复制粘贴技巧不佳。问题不在于我的真实代码。 –
我有一段时间没有使用SQLAlchemy,但我相当确定这不是您为Flask应用程序设置的方式。你应该在标准的SQLAlcehmy上使用'flask-sqlalchemy':http://flask-sqlalchemy.pocoo.org/2.1/quickstart/ – IanAuld