我User
has-one
Person
。因此User.person
是Person
。
我想从User
列表中获取Person
列表。
我尝试了以下内容:
>>> people = Person.query.filter().limit(3)
<flask_sqlalchemy.BaseQuery object at 0x111c69bd0>
>>> User.query.filter(User.person.in_(people)).all()
NotImplementedError: in_() not yet supported for relationships. For a simple many-to-one, use in_() against the set of foreign key values.
获取User
列表User.person
的最佳方法是people
列表{{1}}?
答案 0 :(得分:14)
正如错误消息有用地告诉您,您需要对外键使用in_
:
User.query.join(User.person).filter(Person.id.in_(p.id for p in people)).all()
既然你要对两者进行查询,最好是加入加载然后让人们使用Python:
people = Person.query.join(Person.user).options(db.contains_eager(Person.user)).limit(3).all()
users = [p.user for p in people]
答案 1 :(得分:0)
您还可以将生成器与import socket
import sys
import os
IP = '127.0.0.1'
PORT = 5050
buf = 2048
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.bind((IP,PORT))
data,addr = server.recvfrom(buf)
print(str(addr) + ' says' + data.decode('UTF-8'))
filename='transferfile.txt'
f= open(filename,'rb')
l = f.read(1024)
while (l):
server.sendto(l,addr)
print('Sent ',repr(l))
l = f.read(1024)
f.close()
print('Done sending')
server.close()
一起使用:
or_
当您尝试使用带有已接收对象(例如状态)的过滤器来请求记录时,这很有用。