Dieser Artikel stellt hauptsächlich einen Fallstrick bei der SQLAlchemy-Sortierung in Python vor. Freunde, die ihn benötigen, können darauf zurückgreifen und gemeinsam lernen.
Vorwort
SQLAlchemy ist ein ORMFrameworkunter der PythonProgrammiersprache, das auf der Datenbank aufbautAPI, verwenden Sie die RelationObjekt-Zuordnung, um Datenbankoperationen auszuführen, kurz gesagt: Konvertieren Sie das Objekt in SQL, verwenden Sie dann die Daten-API, um die SQL auszuführen und die Ausführungsergebnisse zu erhalten . Kürzlich bin ich bei der Verwendung der SQLAlchemy-Sortierung auf eine Falle gestoßen, daher wollte ich sie zusammenfassen und mit weiteren Freunden teilen.
Cheat-Code
query = db_session.query(UserVideo.vid, UserVideo.uid, UserVideo.v_width, UserVideo.v_height, UserVideo.create_time, UserVideo.cover, UserVideo.source_url, UserVideo.v_type, UserVideo.category, User.username, User.sex, UserExtraInfo.avatar, UserExtraInfo.watermark) query = query.filter(UserVideo.status == 1, User.uid == UserVideo.uid, UserExtraInfo.uid == UserVideo.uid) query = query.filter(UserVideo.status == 1) query = query.order_by(-UserVideo.vid) query = query.limit(20).all()
Code, der kein Cheat ist
query = db_session.query(UserVideo.vid, UserVideo.uid, UserVideo.v_width, UserVideo.v_height, UserVideo.create_time, UserVideo.cover, UserVideo.source_url, UserVideo.v_type, UserVideo.category, User.username, User.sex, UserExtraInfo.avatar, UserExtraInfo.watermark) query = query.filter(UserVideo.status == 1, User.uid == UserVideo.uid, UserExtraInfo.uid == UserVideo.uid) # .order_by(UserVideo.vid.desc()).limit(20).all() query = query.filter(UserVideo.status == 1) query = query.order_by(UserVideo.vid.desc()) query = query.limit(20).all()
Ja, das hast du richtig gelesen, Es ist dieser horizontale Balken, langsamer. Durch den Wechsel zur desc()
-Funktion kann die Geschwindigkeit um das Zehnfache erhöht werden
Nachfolgend finden Sie eine hochleistungsfähige zufällige Extraktion mehrerer Datenelemente durch sqlalchemy
query = db_session.query(UserVideo.vid, UserVideo.uid, UserVideo.v_width, UserVideo.v_height, UserVideo.create_time, UserVideo.cover, UserVideo.source_url, UserVideo.v_type, UserVideo.category, User.username, User.sex, UserExtraInfo.avatar, UserExtraInfo.watermark) query = query.filter(UserVideo.status == 1, User.uid == UserVideo.uid, UserExtraInfo.uid == UserVideo.uid) rvid = db_session.query(func.round(random.random() * func.max(UserVideo.vid)).label('rvid')).subquery() query = query.filter(UserVideo.category == category) query_tail = query query_tail = query_tail.join(rvid, UserVideo.vid > rvid.c.rvid).limit(20).all()
[Verwandte Empfehlungen]
1. Python-kostenloses Video-Tutorial
2. Python-objektorientiertes Video
Das obige ist der detaillierte Inhalt vonBeschreiben Sie kurz einen häufigen Fehler beim Sortieren in SQLAlchemy. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!