我是SqlAlchemy的新手。我们主要使用Flask,但在特定情况下我需要手动数据库连接。所以我用这样的东西启动了一个新的数据库连接:
write_engine = create_engine("mysql://user:pass@localhost/db?charset=utf8")
write_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,bind=write_engine))
nlabel = write_session.query(Label).filter(Label.id==label.id).first() # Works
#Later in code
ms = Message("Some message")
write_session.add(ms) # Works fine
write_session.commit() # Errors out
错误看起来像“AttributeError:'SessionMaker'对象没有属性'_model_changes'”
我做错了什么?
答案 0 :(得分:2)
从the documentation我认为您可能错过了Session对象的初始化。
尝试:
Session = scoped_session(sessionmaker(autocommit=False, autoflush=False,bind=write_engine))
write_session = Session()
这是一个黑暗中的镜头 - 我对SQLAlchemy并不熟悉。祝你好运!
答案 1 :(得分:2)
您的问题是您错过了这一行:
db_session._model_changes = {}