[Python ORM] Notation lors de l'écriture de SQL à l'aide de sous-requêtes dans la clause IN dans SQL Alchemy

ORM? SQLAlchemy? Comme il a déjà été résumé dans l'article Qiita suivant, omettez-le et seul le sujet principal 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)()`

#Inclure la sous-requête dans la clause IN
rows = db.session.query(User).filter(
  User.id.in_(
    db.session.query(UserItem.user_id).filter(
      UserItem.item_id == 1, UserItem.numbers > 10
    )
  )
).all()

Comme ci-dessous

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

Résumé

SQL Alchemy peut également exprimer un SQL complexe tel que SQL qui utilise des sous-requêtes dans la clause IN

En guise de mise en garde, dans ORM, le type de SQL émis dans les coulisses est une boîte noire, donc s'il s'agit d'un SQL subtil, ajoutez l'option suivante à create_engine lors du débogage et de la sortie SQL Je vous recommande de le vérifier comme vous le faites

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 lors de l'écriture de SQL à l'aide de sous-requêtes dans la clause IN dans SQL Alchemy
Précautions lors de l'utilisation de Pit avec Python
Lors de l'utilisation d'expressions régulières en Python
Lors de l'écriture d'un programme en Python
[Astuces] Écriture facile à lire lors de la connexion de fonctions en Python
Diviser les fichiers lors de l'écriture du plugin vim en python
Un mémorandum lors de l'écriture de code expérimental ~ Se connecter en python
Comment quitter lors de l'utilisation de Python dans Terminal (Mac)
Notation de classe en Python
Sortie de données Excel en écriture séparée à l'aide de Python3 + xlrd + mecab
Une note lors de la création d'un graphe dirigé à l'aide de Graphviz en Python
Méthode d'écriture pratique lors de l'ajout continu à la liste en Python
Résolvez le problème japonais lors de l'utilisation du module CSV en Python.
Un mémo que j'ai écrit une fonction de base en Python en utilisant la récurrence
Précautions lors de l'utilisation de Python avec AtCoder
Scripts pouvant être utilisés lors de l'utilisation de Bottle en Python
Choses à garder à l'esprit lors de l'utilisation de cgi avec python.
Attention lorsque os.mkdir en Python
Convertir la notation CIDR en Python
Traduit à l'aide de googletrans en Python
Utilisation du mode Python dans le traitement
Choses à surveiller lors de l'utilisation d'arguments par défaut en Python
Paramètres lors de l'écriture d'applications Google App Engine / Python avec Intellij Idea
J'obtiens un attribut impossible à définir lors de l'utilisation de @property en python
[SEO] Flux / exemple de code lors de l'utilisation de l'API Google Analytics en Python
N'oubliez pas shebang lors de l'écriture de l'inventaire dynamique d'Ansible en python!
Notation inclusive dans l'argument de la fonction Python
Comportement lors de la liste dans Python heapq
Essayez d'utiliser LevelDB avec Python (plyvel)
Utilisation de variables globales dans les fonctions python
[Python] Soyez prudent lorsque vous utilisez print
Voyons voir l'utilisation de l'entrée en python
Puissance totale en Python (en utilisant functools)
Lire et écrire du texte en Python
Reconnaissance de caractères manuscrits à l'aide de KNN en Python
Précautions lors de l'utilisation de phantomjs de python
Essayez d'utiliser LeapMotion avec Python
Recherche de priorité de profondeur à l'aide de la pile en Python
Lors de l'utilisation de MeCab avec python dans virtualenv
Précautions lors de l'utilisation de six avec Python 2.5
Création d'interface graphique en python avec tkinter 2
Ce que les utilisateurs d'Emacs doivent savoir lors de l'écriture de code Python dans Sublime Text
Notifier à l'aide du Centre de notifications lorsque l'environnement d'exécution est macOS en Python
Une note utile lors de l'utilisation de Python après une longue période