[Python ORM] Notation beim Schreiben von SQL mithilfe von Unterabfragen in der IN-Klausel in SQL Alchemy

ORM? SQLAlchemy? Da es bereits im folgenden Qiita-Artikel zusammengefasst wurde, lassen Sie es weg und nur das Hauptthema https://qiita.com/tomo0/items/a762b1bc0f192a55eae8 https://qiita.com/ariku/items/75799665acd09520bed2

Code

url = 'mysql+pymysql://%s:%s@%s:%s/%s?charset=%s' % (
    self.user,
    self.password,
    self.host,
    int(self.port),
    self.db,
    self.charset
)
self.engine = create_engine(url)
self.session = sessionmaker(bind=self.engine, autocommit=False, autoflush=True)()`

#Unterabfrage in IN-Klausel aufnehmen
rows = db.session.query(User).filter(
  User.id.in_(
    db.session.query(UserItem.user_id).filter(
      UserItem.item_id == 1, UserItem.numbers > 10
    )
  )
).all()

Wie unten

SELECT * FROM users WHERE id IN (
   SELECT user_id FROM user_items WHERE item_id = 1 AND numbers > 10
)

Zusammenfassung

SQL Alchemy kann auch komplexes SQL ausdrücken, z. B. SQL, das Unterabfragen in der IN-Klausel verwendet

Als Einschränkung wird in ORM hinter den Kulissen eine Blackbox ausgegeben. Wenn es sich also um eine subtile SQL handelt, fügen Sie beim Debuggen und Ausgeben von SQL die folgende Option unter "create_engine" hinzu Ich empfehle Ihnen, es zu überprüfen

echo_option = 'DEBUG' in os.environ and os.environ['DEBUG'] == 'on'
self.engine = create_engine(url, echo=echo_option)
self.session = sessionmaker(bind=self.engine, autocommit=False, autoflush=True)()`

Recommended Posts

[Python ORM] Notation beim Schreiben von SQL mithilfe von Unterabfragen in der IN-Klausel in SQL Alchemy
Vorsichtsmaßnahmen bei der Verwendung von Pit mit Python
Bei Verwendung regulärer Ausdrücke in Python
Beim Schreiben eines Programms in Python
[Tipps] Leicht lesbares Schreiben beim Verbinden von Funktionen in Python
Teilen Sie Dateien beim Schreiben des Vim-Plugins in Python
Ein Memorandum beim Schreiben von experimentellem Code ~ Anmelden in Python
Beenden bei Verwendung von Python in Terminal (Mac)
Klassennotation in Python
Geben Sie Excel-Daten mit Python3 + xlrd + mecab separat aus
Ein Hinweis beim Erstellen eines gerichteten Diagramms mit Graphviz in Python
Praktische Schreibmethode beim kontinuierlichen Anhängen an die Liste in Python
Lösen Sie das japanische Problem, wenn Sie das CSV-Modul in Python verwenden.
Ein Memo, dass ich eine Grundfunktion in Python mit Wiederholung geschrieben habe
Vorsichtsmaßnahmen bei der Verwendung von Python mit AtCoder
Skripte, die bei der Verwendung von Bottle in Python verwendet werden können
Dinge, die Sie bei der Verwendung von CGI mit Python beachten sollten.
Achtung bei os.mkdir in Python
Konvertieren Sie die CIDR-Notation in Python
Übersetzt mit Googletrans in Python
Verwenden des Python-Modus in der Verarbeitung
Dinge, auf die Sie achten müssen, wenn Sie Standardargumente in Python verwenden
Einstellungen beim Schreiben von Google App Engine / Python-Apps mit Intellij Idea
Bei Verwendung von @property in Python wird ein Attribut nicht festgelegt
[SEO] Flow / Beispielcode bei Verwendung der Google Analytics-API in Python
Vergessen Sie Shebang nicht, wenn Sie Check! Ansibles dynamisches Inventar in Python schreiben!
Inklusive Notation im Argument der Python-Funktion
Verhalten beim Auflisten in Python heapq
Versuchen Sie es mit LevelDB mit Python (plyvel)
Verwendung globaler Variablen in Python-Funktionen
[Python] Seien Sie vorsichtig, wenn Sie Druck verwenden
Mal sehen, wie man Eingaben in Python verwendet
Gesamtleistung in Python (mit Funktools)
Lesen und Schreiben von Text in Python
Handschriftliche Zeichenerkennung mit KNN in Python
Vorsichtsmaßnahmen bei der Verwendung von Phantomjs aus Python
Versuchen Sie es mit LeapMotion mit Python
Suche nach Tiefenpriorität mit Stack in Python
Bei Verwendung von MeCab mit virtualenv python
Vorsichtsmaßnahmen bei Verwendung von sechs mit Python 2.5
GUI-Erstellung in Python mit tkinter 2
Was Emacs-Benutzer wissen sollten, wenn sie Python-Code in Sublime Text schreiben
Benachrichtigen Sie mit Notification Center, wenn die Ausführungsumgebung in Python macOS ist
Ein nützlicher Hinweis, wenn Sie Python nach langer Zeit verwenden