草庐IT

SQLALCHEMY_TRACK_MODIFICATIONS

全部标签

python - 如何在 3 个表上的 SQLAlchemy 中执行 JOIN,其中一个在其他两个表之间进行映射?

假设我有以下表格:文章包含字段article_id、titleTags字段tag_id,nameArticleTags包含字段article_id、tag_id我希望找到所有具有给定标签的文章。我如何在SQLAlchemy中创建这个复杂的连接?在SQL中它看起来像:SELECTa.article_id,a.titleFROMArticlesASaJOINArticleTagsASatONa.article_id=at.article_idJOINTagsAStONat.tag_id=t.tag_idWHEREt.name='tag_name'我不知道如何在SQLAlchemy中执行此操

python - 只读对象模型的 SqlAlchemy 优化

我有一个复杂的对象网络,这些对象是使用sqlalchemyORM映射从sqlite数据库生成的。我有很多深层嵌套:forparentinowner.collection:forchildinparent.collection:forfooinchild.collection:dolotsofcalcswithfoo.property我的分析显示sqlalchemy工具在此用例中花费了大量时间。问题是:我从不在运行时更改对象模型(映射属性),所以一旦它们被加载我就不需要检测,或者实际上根本不需要任何sqlalchemy开销。经过大量研究,我想我可能必须从我已经加载的“检测对象”中克隆一组

python - SQLAlchemy - ObjectDeletedError : Instance '<Class at...>' has been deleted. 帮助

我在从数据库中删除行然后添加新行时遇到了一些问题。这是代码:forpositionidinform_result['responsibilities']:inputdata=form_result['responsibilities'][positionid]self.__deleterow(dbmyaccount.Responsibilities,session['authed']['userid'])forrespin(i.strip()foriininputdata.split(',')):resp_q=dbmyaccount.Responsibilities(session['

python - 使用 session.query 通过 SQLAlchemy ORM 更新连接表

使用MySQL,我想生成这个SQL:UPDATEtableAINNERJOINtableBONtableA.some_id=tableB.some_idSETtableA.foo=1WHEREtableB.barIN('baz','baaz')这是我的SQLAlchemy查询:session.query(tableA).join(tableB,tableA.some_id==tableB.some_id)\.filter(tableB.bar.in_(['baz','baaz']))\.update({tableA.foo:1})但是它生成的SQL是这样的(多表更新,没有join条件,

python - SQLAlchemy:防止自动关闭

我需要通过SQLAlchemy插入/更新批量行。并获取插入的行。我试着用session.execute来做:>>>posts=db.session.execute(Post.__table__.insert(),[{'title':'dfghdfg','content':'sdfgsdf','topic':topic}]*2)>>>posts.fetchall()ResourceClosedErrorTraceback(mostrecentcalllast)还有引擎:In[17]:conn=db.engine.connect()In[18]:result=conn.execute(Po

python - 在没有子类声明基础的情况下使用 flask-sqlalchemy

我将Flask用于我的pythonwsgi服务器,将sqlalchemy用于我所有的数据库访问。我认为我想在我的应用程序中使用Flask-Sqlalchemy扩展,但我不想使用声明性基类(db.Model),相反,我想使用来自sqlalchemy.ext.declarative的基础。这是否违背了使用扩展程序的全部目的?我的用例:我希望扩展能够帮助我更好地管理session/引擎,但我想单独处理所有模型。我实际上不介意使用扩展,但我想编写严格模型。我正在从一个非Flask应用程序移植代码,并且我将在我进行时将更改推回该项目。例如,如果flask-sqlalchemy允许我在Tablem

python - SQLAlchemy - 在查询中使用混合属性

我正在尝试使用像这样的SQLAlchemy混合属性classMetric(Base):__tablename__='metric'id=Column(Integer,primary_key=True)value=Column(Float,nullable=False)@hybrid_propertydefdominance(self):return1-abs(0.5-float(self.value))现在,我像这样在我的模型中使用它classMetricModel(BaseModel):defget_dominance(self):self.query(Metric).filter(

python - 在 SQLAlchemy 上使用别名两次加入同一个表

我正在尝试将以下查询移植到SQLAlchemy:SELECTu.username,GROUP_CONCAT(DISTINCTuserS.name)FROMSkillsASfilterSINNERJOINUserSkillsASufsONfilterS.id=ufs.skill_idINNERJOINUsersASuONufs.user_id=u.idINNERJOINUserSkillsASusONu.id=us.user_idINNERJOINSkillsASuserSONus.skill_id=userS.idWHEREfilterS.nameIN('C#','SQL')GROUP

python - sqlalchemy:为什么我不能更新到 func.now(),但可以使用 'now()'?

...当我尝试执行如下所示的查询时:Session().query(MyMappedClass).update({MyMappedClass.time:func.now()})我得到:InvalidRequestError:CouldnotevaluatecurrentcriteriainPython.Specify'fetch'orFalseforthesynchronize_sessionparameter.但如果我这样做:Session().query(MyMappedClass).update({MyMappedClass.time:'now()'})...它有效。有人知道为什

python - SQLAlchemy - 设置关系时更新外键

我有一个类:classExampleClass(Base):__tablename__='chart'id=Column(Integer,primary_key=True)element_id=Column(Integer,ForeignKey('anotherTable.id'))element=relationship(AnotherClass)element2_id=Column(Integer,ForeignKey('anotherTable2.id'))element2=relationship(AnotherClass2)我想根据element_id和element2_id