草庐IT

SQLALCHEMY_TRACK_MODIFICATIONS

全部标签

python - SQLAlchemy 对象已附加到 session

我试图让一个应用程序的服务器正常工作,但我在登录时遇到错误:[!]Object''isalreadyattachedtosession'2'(thisis'3')看来我要添加的session已经在数据库中了。这是导致问题的代码片段:@app.route('/login',methods=['POST'])deflogin():u=User.query.filter(User.username==request.form["username"]).first()ifnotuoru.password!=request.form["password"]:returnerror("E1")s=

python - SQLAlchemy:从 db.Model 获取关系

我需要获取模型的属性列表,这些属性实际上是关系(也就是说,它们是由relationship()创建的)。假设我在models中有一个模型Foo:classThing(db.Model):id=db.Column(...)bar_id=db.Column(...)foo_id=db.Column(...)foo=db.relationship('Foo')bar=db.relationship('Bar')稍后,我想采用models.Thing并获取关系属性列表,即['foo','bar']。目前我正在检查dir(models.Thing)指示的每个属性恰好是类型sqlalchemy.o

python - SQLAlchemy:预先加载多个关系

我要查询这个结构:A->BB->CB->D使用Load接口(interface)执行此操作的语法是什么,文档对此不是很清楚(http://docs.sqlalchemy.org/en/latest/orm/loading_relationships.html#sqlalchemy.orm.joinedload)。我所看到的只是如何做:A->BB->CC->D给定查询:query(A).options(joinedload(A.b).joinedload(B.c))我如何在链中向后返回以指定B(B.d)上的第二个关系? 最佳答案 只需

python - 在 sqlalchemy ORM 查询中使用 NOT EXISTS 子句

我想将以下原始sql查询转换为sqlalchemyORM查询:SELECT*FROMkwviolationsASkwviolWHEREkwviol.proj_id=1ANDNOTEXISTS(SELECT*FROMkwmethodmetricsASkwmetricsWHEREkwmetrics.kw_id=kwviol.kw_idANDkwmetrics.checkpoint_id=5);我尝试了以下ORM查询但没有成功:self.session.query(KWViolations).filter(KWViolations.proj_id==project.id).\filter(a

python - 在实际提交 SQLAlchemy 对象的删除时执行一些代码

我有一个表示文件的SQLAlchemy模型,因此包含实际文件的路径。由于数据库行和文件的删除应该一起进行(因此不会留下孤立的文件,也没有行指向已删除的文件)我向我的模型类添加了一个delete()方法:defdelete(self):ifos.path.exists(self.path):os.remove(self.path)db.session.delete(self)这很好用,但有一个很大的缺点:在提交包含数据库删除的事务之前,文件被立即删除。一个选项是在delete()方法中提交-但我不想这样做,因为我可能无法完成当前事务。所以我正在寻找一种方法来延迟删除物理文件,直到删除行的

python - 在应用程序启动时检查数据库架构是否与 SQLAlchemy 模型匹配

为了防止人为错误,我想检查当前的SQL数据库架构是否与SQLAlchemy模型代码匹配,并且不需要在应用程序启动时运行迁移。有没有办法在SQLAlchemy上迭代所有模型,然后查看数据库模式是否符合模型的预期?这是为了防止稍后弹出错误(HTTP500由于缺少表、字段等) 最佳答案 根据上面@yoloseem的提示,这里有一个完整的答案:importloggingfromsqlalchemyimportinspectfromsqlalchemy.ext.declarative.clsregistryimport_ModuleMarke

python - 在 sqlalchemy 中强制对象为 `dirty`

有没有办法强制将sqlalchemy映射的对象视为脏?例如,给定sqlalchemy的上下文ObjectRelationalTutorial问题得到证明,a=session.query(User).first()a.__dict__['name']='eh'session.dirty屈服,IdentitySet([])我正在寻找一种方法来强制用户a进入脏状态。出现此问题是因为使用sqlalchemy映射的类控制了属性getter/setter方法,这阻止了sqlalchemy注册更改。 最佳答案 我最近遇到了同样的问题,但不是很明显

python - SQLalchemy 属性错误 : 'str' object has no attribute '_sa_instance_state'

我正在尝试使用SQLAlchemy+Python向我的数据库中添加一个项目,但一直出现错误。我的数据库_setup.py:classcompany(Base):__tablename__='company'compID=Column(Integer,primary_key=True)name=Column(String(80),nullable=False)classitem(Base):__tablename__='items'itemID=Column(Integer,primary_key=True)name=Column(String(80),nullable=False)ca

python - Postgresql ON CONFLICT 在 sqlalchemy 中

我已经阅读了相当多的资源(ao。1、2),但我无法在sqlalchemy中使用Postgresql的ONCONFLICTIGNORE行为。我用过thisacceptedanswer作为基础,但它给出了SAWarning:Can'tvalidateargument'append_string';can'tlocateanySQLAlchemydialectnamed'append'我已经尝试将postgresql方言添加到@compile子句,重命名我的对象,但它不起作用。我还尝试使用str(insert())+"ONCONFILCTIGNORE"但没有结果。(顺便说一句,不足为奇)如何

Python SQLAlchemy : AttributeError: Neither 'Column' object nor 'Comparator' object has an attribute 'schema'

我尝试在我的项目中创建一个新的数据库,但是当我运行脚本时出现了这个错误,我有另一个使用类似定义的项目,它以前工作过,但现在出现了同样的错误。我使用的是Python2.7.8,SQLAlchemy模块的版本是0.9.8。顺便说一句,一个项目使用了Flask-SQLAlchemy,效果很好。我很困惑。回溯信息如下:Traceback(mostrecentcalllast):File"D:/Projects/OO-IM/db_create.py",line4,infrommodelsimportBaseFile"D:\Projects\OO-IM\models.py",line15,inCo