草庐IT

orm_crawler

全部标签

python - 在 Odoo ORM 中处理 SQL 约束异常

我在我的模型中定义了一个UNIQUE约束:classFooBar(models.Model):_name='my.foobar'#..._sql_constraints=[('foo_bar_uniq','unique("foo","bar")','Youcouldnotsteptwiceintothesamefoobar!')]还有一个带有用于创建新对象的代码的Controller:classFooBarController(http.Controller):@http.route('/foobar/create/',auth='public',website=True)defcre

python - IntegrityError 中缺少表名(Django ORM)

我在Django的IntegrityError中缺少表名:Traceback(mostrecentcalllast):...returnself.cursor.execute(sql,params)File".../django/db/utils.py",line94,in__exit__six.reraise(dj_exc_type,dj_exc_value,traceback)File".../django/db/backends/utils.py",line64,inexecutereturnself.cursor.execute(sql,params)IntegrityErro

python - 使用 Django 的 ORM Extra() 包含重复表

我正在尝试使用Django的ORM实现一个简单的三元组。我希望能够搜索任意复杂的三重模式(例如,就像您使用SparQL一样)。为此,我尝试使用.extra()方法。然而,即使文档提到它在理论上可以通过自动为重复的表引用创建别名来处理对同一个表的重复引用,但我发现它在实践中并没有这样做。例如,假设我的“三重”应用程序中有以下模型:classTriple(models.Model):subject=models.CharField(max_length=100)predicate=models.CharField(max_length=100)object=models.CharField

python - 在 SqlAlchemy ORM 中更新行

我正在尝试从数据库中获取一行,修改该行并再次保存。一切都通过使用SqlAlchemy我的代码fromsqlalchemyimportColumn,DateTime,Integer,String,Table,MetaDatafromsqlalchemy.ormimportmapperfromsqlalchemyimportcreate_engine,ormmetadata=MetaData()product=Table('product',metadata,Column('id',Integer,primary_key=True),Column('name',String(1024),n

python - 将 SqlAlchemy orm 结果转换为 dict

如何将SQLAlchemyorm对象结果转成JSON格式?目前我正在使用sqlalchemy反射来反射(reflect)数据库中的表。假设我有一个User表和一个Address表,我正在从数据库中反射(reflect)出来。用户实体与地址实体具有一对一的关系。下面是从数据库反射(reflect)表并使用映射器类映射关系的代码。fromsqlalchemyimportTablefromsqlalchemy.ormimportmapper,relationshipuser_reflection=Table('user',metadata,autoload=True,autoload_wit

python - django orm 组按 json 字段中的 json 键

我在我的Django模型上使用json字段:classJsonTable(models.Model):data=JSONField()type=models.IntegerField()我尝试了下一个查询,它适用于普通的sql字段:JsonTable.objects.filter(type=1).values('type').annotate(Avg('data__superkey'))但这会引发下一个错误:FieldError:Cannotresolvekeyword'superkey'intofield.Joinon'data'notpermitted.有没有办法在不使用原始sql

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 - 带连接的 Django ORM SELECT

django中的模型:classKey(models.Model):id=models.AutoField(primary_key=True,blank=True)name=models.CharField(max_length=50)classRecord(models.Model):id=models.AutoField(primary_key=True,blank=True)project_id=models.IntegerField()name=models.CharField(max_length=50)classValue(models.Model):id=models.A

python - 如何限制/偏移 sqlalchemy orm 关系的结果?

如果我有一个用户模型和文章模型,用户和文章是一对多的关系。这样我就可以访问这样的文章user=session.query(User).filter(id=1).one()printuser.articles但这会列出用户的所有文章,如果我想将文章限制为10篇怎么办?在rails中有一个all()方法,它可以有限制/偏移量。在sqlalchemy中也有一个all()方法,但是没有参数,如何实现呢?编辑:似乎user.articles[10:20]是有效的,但是sql没有在查询中使用10/20。所以实际上它会加载所有匹配的数据,并在python中进行过滤? 最佳

python - 使用 django orm 生成更新查询

我需要使用djangoorm实现这个查询:updatetablesetfield=field+1whereid=id我不想用这个:o=model.objects.get(id=id)o.field+=1o.save()因为它使用select和whenupdate,并且不是线程安全的。如何通过orm实现? 最佳答案 前面的回答者都有部分解决方案:您应该将update与F()结合使用:Model.objects.filter(id=id).update(field=F('field')+1))请注意,这会进行就地更新,根本不需要SELE