[PYTHON] Rechercher la table à l'aide de sqlalchemy et créer un dictionnaire

Rechercher la table DB par exécution stockée et créer un dictionnaire

Par exemple, préparez une procédure stockée dans SQL Server qui renvoie un enregistrement qui développe plusieurs enregistrements de n'importe quelle table horizontalement, exécutez le stocké avec SQLAlchemy et récupérez le résultat de l'exécution (vle) avec fetch one (). , Obtenez le nom de la colonne (clm) des données avec les touches (). Si vous répertoriez ces deux éléments avec une fonction zip et en faites un dictionnaire dict, vous pouvez développer le traitement tel que la création d'un fichier XML à l'aide de elementTree dans le processus suivant.

make_dict.py


    import sqlalchemy

    ym = 201603

    CONNECT_INFO = 'mssql+pyodbc://hogehoge' #hoge hoge est n'importe quel DNS(connexion odbc)
    engine = sqlalchemy.create_engine(CONNECT_INFO, encoding='utf-8')

    #Génération de session
    Session = sqlalchemy.orm.sessionmaker(bind=engine)
    session = Session()
    
    #Exécution de procédure stockée
    query = 'EXEC dbo.sp_rtrv4XML @prd = {0}'.format(ym)
    #vle = session.execute(query).fetchall() #Obtenir le résultat de l'exécution:Lorsque plusieurs résultats sont renvoyés
    #print( vle[0][0] )

    vle = session.execute(query).fetchone() #Obtenir le résultat de l'exécution:1 caisse sera retournée
    clm = session.execute(query).keys()  #Obtenir le nom de la colonne

    dc = dict(zip(clm , vle)) #Créer un dictionnaire
    print(dc)

    #Nettoyer après la session
    #session.commit()
    session.close()

Remarque) La base de données à connecter est supposée être SQL Server. Dans le cas de SQLServer, l'exécution stockée est effectuée par l'instruction EXEC.

Supplément

apdx.sql


--Instruction SELECT qui développe plusieurs enregistrements dans une table horizontalement en un seul enregistrement
;WITH apdx
AS(
    SELECT 1 AS n,'vle1-1' AS fld1 , 'vle1-2' AS fld2 UNION ALL
    SELECT 2 AS n,'vle2-1' AS fld1 , 'vle2-2' AS fld2 UNION ALL
    SELECT 3 AS n,'vle3-1' AS fld1 , 'vle3-2' AS fld2 UNION ALL
    SELECT 4 AS n,'vle4-1' AS fld1 , 'vle4-2' AS fld2 
)
--SELECT *FROM hoge
SELECT 
    MAX(CASE WHEN n= 1 THEN fld1 END )AS fl11
,   MAX(CASE WHEN n= 1 THEN fld2 END )AS fl12
,   MAX(CASE WHEN n= 2 THEN fld1 END )AS fl21
,   MAX(CASE WHEN n= 2 THEN fld2 END )AS fl22
,   MAX(CASE WHEN n= 3 THEN fld1 END )AS fl31
,   MAX(CASE WHEN n= 3 THEN fld2 END )AS fl32
,   MAX(CASE WHEN n= 4 THEN fld1 END )AS fl41
,   MAX(CASE WHEN n= 4 THEN fld2 END )AS fl42
FROM apdx

/* 
Résultat de l'exécution ↓
fl11	fl12	fl21	fl22	fl31	fl32	fl41	fl42
vle1-1	vle1-2	vle2-1	vle2-2	vle3-1	vle3-2	vle4-1	vle4-2
*/

apdx.py


#Créer un dictionnaire à l'aide de la fonction ZIP
   clm = ['fld1','fld2','fld3','fld4']
   vle = ['vle1','vle2','vle3','vle4']

   y = zip(clm,vle)
   print(dict(y))
   # {'fld3':'vle3','fld2':'vle2','fld1':'vle1','fld4':'vle4',}

Recommended Posts

Rechercher la table à l'aide de sqlalchemy et créer un dictionnaire
Utilisez sqlalchemy pour rechercher la table DB et créer un Dataflame pour les pandas
Créer un dictionnaire imbriqué à l'aide de defaultdict
Créez une interface graphique sur le terminal à l'aide de curses
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 2 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 3 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 4 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 5 ~
Créez un robot de réponse automatique en temps réel à l'aide de l'API Twitter Streaming
Créer une nouvelle liste en combinant des éléments en double dans la liste
Recherche par image de la pellicule en utilisant Pythonista3
Précautions lors de l'utilisation d'une liste ou d'un dictionnaire comme argument par défaut
Créer un tableau simple à l'aide de prettytable
Traiter les données extraites d'un certain système de point de vente pour créer un tableau récapitulatif par produit et par heure
Traitement des insertions de table DB à l'aide de sqlalchemy
[Ev3dev] Créez un programme qui capture LCD (écran) en utilisant python
Créer une API CRUD à l'aide de l'API rapide
Créez un wrapper de langage C à l'aide de Boost.Python
Estimer la probabilité qu'une pièce apparaisse en utilisant MCMC
Créer un enregistrement avec des pièces jointes dans KINTONE à l'aide du module de requêtes Python
Python> dictionnaire> values ()> Obtenir toutes les valeurs à l'aide de values ()
[Python] Créer un environnement Batch à l'aide d'AWS-CDK
Créer une application à l'aide de l'API Spotify
Différentes façons de créer un dictionnaire (mémoires)
[Python] Gratter une table avec Beautiful Soup
Créer un dictionnaire Hatena pour SKK (supplémentaire)
Script pour créer un fichier de dictionnaire Mac
Ajouter une couche à l'aide du backend Keras
Créez une API REST à l'aide du modèle appris dans Lobe et TensorFlow Serving.
[AWS Lambda] Créer un package de déploiement à l'aide de l'image Amazon Linux Docker
Créer un fichier GIF en utilisant Pillow en Python
Créer une application d'assistance technique à l'aide de PyLearn2
Créons une API REST en utilisant SpringBoot + MongoDB
Créer une table d'enregistrement à partir des résultats de correspondance JFL
Créer un arbre phylogénétique à partir de Biopyton en utilisant ClustalW2
Ecrire un serveur TCP à l'aide du module SocketServer
Créer un babillard avec Heroku, Flask, SQL Alchemy
[Python] Trier la table par sort_values (pandas DataFrame)
Créer un analyseur de données binaires à l'aide de Kaitai Struct
Créer une carte Web en utilisant Python et GDAL
J'ai essayé d'utiliser le module Datetime de Python
Créer un système de notification des visiteurs à l'aide de Raspberry Pi
Créez un fichier MIDI en Python en utilisant pretty_midi
Créez une commande pour obtenir le journal de travail
N'y a-t-il pas une valeur par défaut dans le dictionnaire?
Créez un outil de traduction avec Translate Toolkit
Créer une table avec le notebook IPython
Essayez de créer une table d'enregistrement de bataille avec matplotlib à partir des données de "Schedule-kun"
[Python] Vous pouvez enregistrer un objet dans un fichier en utilisant le module pickle.
Utilisez l'API Twitter pour réduire le temps nécessaire à Twitter (créer une chronologie de mise en évidence (comme))