- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码
#!/usr/bin/env python
"""doc"""
import peewee
db = peewee.SqliteDatabase(":memory:")
class BaseModel(peewee.Model): # pylint: disable=W0232
"""base model"""
class Meta: # pylint: disable=C0111,W0232,R0903
database = db
class Student(BaseModel):
"""doc"""
name = peewee.CharField()
class Course(BaseModel):
"""doc"""
name = peewee.CharField()
class StudentCourse(BaseModel):
"""doc"""
student = peewee.ForeignKeyField(Student)
course = peewee.ForeignKeyField(Course)
Student.create_table()
Course.create_table()
StudentCourse.create_table()
s1 = Student(name="Student1")
s1.save()
s2 = Student(name="Student2")
s2.save()
s3 = Student(name="Student3")
s3.save()
s4 = Student(name="Student4")
s4.save()
c1 = Course(name="course1")
c1.save()
c2 = Course(name="course2")
c2.save()
c3 = Course(name="course3")
c3.save()
sc21 = StudentCourse(student=s2, course=c1)
sc21.save()
sc22 = StudentCourse(student=s2, course=c2)
sc22.save()
sc23 = StudentCourse(student=s2, course=c3)
sc23.save()
sc31 = StudentCourse(student=s3, course=c1)
sc31.save()
sc32 = StudentCourse(student=s3, course=c2)
sc32.save()
sc41 = StudentCourse(student=s4, course=c1)
sc41.save()
query = (
StudentCourse
.select(StudentCourse, Student, Course)
.join(Course)
.switch(StudentCourse)
.join(Student)
.order_by(Student.name))
last = None
for student_course in query:
student = student_course.student
if student != last:
last = student
print "Student: %s" % student.name
print " - %s" % student_course.course.name
产生这个输出:
Student: Student2
- course1
- course2
- course3
Student: Student3
- course1
- course2
Student: Student4
- course1
这基本上是来自 peewee docs 的示例
我需要过滤结果并只选择那些拥有给定子集中所有类(class)的学生:
courses = ["course1", "course2"]
我尝试使用 IN 运算符并修改了选择查询,如下所示:
query = (
StudentCourse
.select(StudentCourse, Student, Course)
.join(Course)
.switch(StudentCourse)
.join(Student)
.where(Course.name << courses)
.order_by(Student.name))
但它产生了错误的结果,这意味着我做错了:
Student: Student2
- course1
- course2
Student: Student3
- course1
- course2
Student: Student4
- course1
这里有两处错误:
是否有可能在一个查询中实现我想要的,或者我必须遍历学生,为他们每个人做一个SELECT查询,并将他们的类(class)列表与我的匹配类(class)过滤器?
我的目标是得到这个输出:
Student: Student2
- course1
- course2
- course3
Student: Student3
- course1
- course2
最佳答案
这应该让您指向正确的方向:https://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/
关于python - peewee:过滤从多对多关系中选择查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20073240/
我正在将 Peewee 用于我正在进行的一个项目,并且我正在尝试弄清楚如何动态设置数据库,以便我可以使用一个用于生产,一个用于测试。我见过的所有示例在任何类之外都有以下行: database = Sq
我正在努力思考 Tornado 和与 Postgresql 的异步连接。我在 http://peewee-async.readthedocs.io/en/latest/ 找到了可以执行此操作的库. 我
我有一个记录温度数据的表,其中有 120 万行。 虽然它有一个候选键,但目前没有主键。 由于 Peewee 要求所有表都有一个 ID AUTO_INCRMENT 列,我应该简单地向表中添加一个列,还是
作为练习,我从 API 中提取数据并将其插入到 psql 数据库中。我最初遵循每次拉取 1000 个条目的默认限制,但我决定尝试获取大约 40K 行的所有数据。经过一些实验后,我可以拉出 4800,但
几个月来,我一直在广泛使用 peewee 和 postgresql。突然间,这开始发生了。如果我运行任何查询命令并收到错误,则所有后续命令开始返回 peewee.InternalError: curr
我被难住了。因此,我在 peewee 中定义了三个模型: class Patient(BaseModel): patientIdx = IntegerField() gender =
有没有一种方法可以在peewee中定义自动递增字段。 我知道我们可以定义序列,但是手动创建序列而不需要由create_tables管理的需求使我无法使用它。 (构建过程由创建表管理,我不希望不添加手动
在 Peewee 中是否有一种方法或设置可以让我打印出正在执行的所有查询,以便调试和了解潜在的性能问题。 最佳答案 是的,是记录在案 :http://docs.peewee-orm.com/en/la
我需要更新整个用户表的字段。 docs中有说明我不应该遍历所有表记录。但为了计算新的字段值,我需要使用循环、用户关系和其他依赖于具体模型的复杂逻辑来执行计算。 我尝试将此计算包含在模型的属性中,但我得
我有一个表,我需要向其中添加列,其中之一是指示业务逻辑的列。因此,请将其视为“优先级”列,并且它必须是唯一的并且是整数字段。它不能是主键,但对于业务逻辑目的来说它是唯一的。 我搜索了文档,但找不到添加
class Parent(BaseModel): name = peewee.CharField() class Child(BaseModel): name = peewee.Cha
这就是我所拥有的: SomeTable.select.where(reduce(operator.or_, (SomeTable.stuff == entry for entry in big_lis
我如何知道记录是否确实已更新?这是我的代码: for team, rating in team_ratings.items(): query1 = Ratings.update(sagar
我使用 pewee 和以下查询: for row in Group.select(): group_data = process_group(row.link) Group.upda
这是一个基本示例 - 帖子由用户拥有和喜欢。如何为特定用户选择喜欢的帖子? import datetime import peewee class User(peewee.Model): na
我有一个 sqlite 数据库,用作我用 python 开发的应用程序的数据存储文件。 现在新功能的开发需要我在数据库中定义新字段。有没有一种方法可以使用 peewee 加载使用旧表定义(没有新字段)
我有一个模型,其中有一个名为 data 的字段,其类型为 jsonb: class Post(Model): ... data: Dict[str,Any] = BinaryJSONF
我希望能够连接到数据库 (PostgreSQL),其中 url 和凭据作为参数接收,而无需事先了解该方案。所以我已经知道我可以像这样在 python 中创建新类型: MyModel = type('M
我创建了一个像这样的mysql连接池: database = PooledMySQLDatabase('test', max_connections=10,
在使用 peewee + MySQL 数据库的 Python 中,是否可以在更新函数中使用一些变量作为关键字? 例如: what = raw_input('What you want to chang
我是一名优秀的程序员,十分优秀!