我具有以下数据库设置:
abcs = db.Table('abcs',
db.Column('hero_id', db.Integer, db.ForeignKey('hero.id')),
db.Column('player_id', db.Integer, db.ForeignKey('player.id')),
db.Column('game_id', db.Integer, db.ForeignKey('game.id'))
)
class Player(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(250), nullable=False)
account_id = db.Column(db.String(250), nullable=False, unique=True)
class Hero(db.Model):
id = db.Column(db.Integer, primary_key=True)
hero_id = db.Column(db.Integer, unique=True)
localized_name = db.Column(db.String)
url_small_portrait = db.Column(db.String)
url_large_portrait = db.Column(db.String)
url_full_portrait = db.Column(db.String)
url_vertical_portrait = db.Column(db.String)
class Game(db.Model):
id = db.Column(db.Integer, primary_key=True)
mmr = db.Column(db.Integer)
server_steam_id = db.Column(db.Integer)
match_id = db.Column(db.Integer)
lobby_id = db.Column(db.Integer)
activate_time = db.Column(db.Integer)
deactivate_time = db.Column(db.Integer)
duration = db.Column(db.Integer)
has_pro = db.Column(db.Integer, default=-1)
radiant_win = db.Column(db.Integer)
players = db.relationship("Player", secondary = abcs, lazy='subquery',
backref=db.backref('games', lazy=True))
heroes = db.relationship("Hero", secondary = abcs, lazy='subquery',
backref=db.backref('games', lazy=True))
这意味着每当我向“游戏”表中添加条目时,Game.players都会返回一个列表,其中包含“玩家”类型的对象。
现在我想做的就是查询表格
p = Player.query.filter(P.account_id == 12345).first()
games = Game.query.filter(*get all games where Game.players contain p*).all()
我对第二行的第一个幼稚方法是
games = Game.query.filter(Game.players.contains(p)).all()
并确实返回“游戏”中的所有条目,其中Game.players出于某种原因包含p,但出于某种原因,使用 .contains 更改了每一行.player中元素的顺序,例如列表
games[0].players
与直接查询特定游戏的情况相比,现在的顺序有所不同。
所以基本上,我在问我如何实现自己想做的事情-如何查询表中包含特定玩家的所有游戏?
答案 0 :(得分:0)
在查询中使用import cv2
print(__version__)
,以确保获得可预测的订单。例如
opencv-contrib-python