# J'ai essayé quelque chose comme Vlookup avec Python # 2

---Objectif--- Lisez les changements quotidiens tels que les informations d'inventaire de la base de données et versez-les dans les données spécifiées Exportez au format spécifié.

Interpréteur utilisé: Python3.8

--- Environnement de travail de l'affiche ---    Windows10Pro 64Bit

code

#!/usr/bin/env python
# -*- coding: utf-8 -*-

###Module utilisé###
import sqlite3
import pandas as pd
import datetime

######Obtenir l'horodatage
ThisDate = datetime.datetime.today().strftime("%Y%m%d")

#CurStocks <<Variable pour le bloc de données qui contient la base de données du maître d'inventaire de référence


######Convertir la base des informations d'inventaire en cadre de données de référence d'inventaire
#Ici, les données de la source de référence de stock sont extraites du fichier au format SQlite3,
#Convertissez votre format préféré en une trame de données avec Pandas.

dbpath = 'C:/Source de référence/Stock SQLite/Zaiko.db' 
conn = sqlite3.connect(dbpath)
cursor = conn.cursor()
cursor=cursor.execute('SELECT * FROM TurnOver_Data') 
CurStocks = pd.DataFrame(cursor.fetchall())
CurStocks.columns=["index", "Nom du produit", "CD produit", "code à barre", "Stock"]
conn.close()
#(Remarques) ↑ La méthode ci-dessus "curseur".fetchall()"
#Le titre de la colonne sera omis, je l'ajouterai donc plus tard.
#Les données de la source de référence sont basées sur le titre de colonne ci-dessus.


######Préparez un fichier au format Sqlite pour le coulage

print("● Mettre à jour le fichier de contact d'inventaire")
dbpath = 'C:/Destination de coulée/Client_Stock FMT.db'
conn = sqlite3.connect(dbpath)
df_files=("C:/Verser le fichier de base de destination/Client_Stock FMT.xlsx")
#Je fais une liste séparée de destinations dans le fichier Excel, mais c'est à ce moment que le nombre d'éléments cibles augmente, etc.
#En raison de la méthode de création d'une liste de base avec un fichier Excel et de sa réécriture pour une maintenance facile

df = pd.read_excel(df_files,encoding="cp932")
Chlist = (df["JAN"].transpose())
#df["JAN"].transpose()<<Les données de "JAN" sont converties de façon à pouvoir être lues une par une.
#La colonne de la destination de coulée porte le titre "JAN" qui est la clé de lecture.


######Les données de référence d'inventaire sont tournées et référencées séquentiellement.

for item in Chlist:
    CurStocksult = CurStocks.query('code à barre== @item')
    #Ici, nous allons nous référer au code JAN qui est la clé du bloc de données source de référence créé précédemment et le tourner.
    #Colonne source de référence: "Code à barres" Destination de coulée: titre de la colonne "JAN"
    #Ici, nous lirons un par un à partir du bloc de données source de référence.

    if len(CurStocksult) >= 1:
        #Comptage de stock: si le cadre de référence a le JAN, reportez-vous à la position des données.
        CurStocksult = (CurStocksult.iat[0, 3])

        #Obtenir le numéro d'index (position des données de la liste du tableau secondaire)
        DFindex=int(df.query('JAN == @item').index.astype("int64").values[0])

        if(CurStocksult) < 3 :
            Buf = 0
            df.iat[DFindex, 7] = "Pénurie"
        else:
            Buf=CurStocksult
            df.iat[DFindex, 7] = ""
            
        df.iat[DFindex, 6]=Buf
        df.iat[DFindex, 8]=ThisDate
        #La 6ème colonne de la destination de coulée est la colonne de stock, la 7ème colonne est la colonne d'indicateur et la 8ème colonne est l'horodatage mis à jour.

df.to_sql("Stock_Data", conn, if_exists="replace")
df.to_csv('C:/Données d'inventaire mises à jour.csv')
#Mise à jour de Sqlite et CSV.

conn.close()
print("● Mise à jour terminée")

del df
del df_files

Points obstrués, etc.

1: Créer une liste pour le traitement en boucle Chlist = (df["JAN"].transpose()) Afin de traiter la liste des destinations de coulée une par une, la liste clé des destinations de coulée Je l'ai converti pour qu'il puisse être tourné en boucle

2: Acquisition du numéro d'index DFindex=int(df.query('JAN == @item').index.astype("int64").values[0]) Processus de conversion pour obtenir la position des données (axe Y?) De la liste des tableaux quadratiques

Recommended Posts

# J'ai essayé quelque chose comme Vlookup avec Python # 2
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé gRPC avec Python
J'ai essayé webScraping avec python.
J'ai essayé d'exécuter prolog avec python 3.8.2.
J'ai essayé la communication SMTP avec Python
J'ai essayé le rendu non réaliste avec Python + opencv
J'ai essayé un langage fonctionnel avec Python
J'ai essayé Python> autopep8
J'ai essayé Python> décorateur
J'ai essayé de "lisser" l'image avec Python + OpenCV
J'ai essayé des centaines de millions de SQLite avec python
J'ai essayé de "différencier" l'image avec Python + OpenCV
J'ai essayé L-Chika avec Razpai 4 (édition Python)
J'ai essayé la différenciation jacobienne et partielle avec python
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé d'utiliser mecab avec python2.7, ruby2.3, php7
J'ai essayé la synthèse de fonctions et le curry avec python
J'ai essayé de "binariser" l'image avec Python + OpenCV
J'ai essayé d'exécuter faiss avec python, Go, Rust
J'ai essayé d'exécuter Deep Floor Plan avec Python 3.6.10.
J'ai essayé d'envoyer un email avec SendGrid + Python
J'ai essayé Learning-to-Rank avec Elasticsearch!
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de démarrer avec le script python de blender_Part 01
J'ai fait un blackjack avec du python!
J'ai essayé de toucher un fichier CSV avec Python
[OpenCV / Python] J'ai essayé l'analyse d'image de cellules avec OpenCV
J'ai essayé le clustering avec PyCaret
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé de démarrer avec le script python de blender_Partie 02
J'ai essayé d'implémenter le perceptron artificiel avec python
Dessinez de force quelque chose comme un organigramme avec Python, matplotlib
J'ai essayé l'extension C de Python
Mayungo's Python Learning Episode 1: J'ai essayé d'imprimer avec impression
J'ai fait un blackjack avec Python.
J'ai essayé de frapper l'API avec le client python d'echonest
J'ai essayé de résoudre la théorie des nombres entiers d'AOJ avec Python
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
J'ai essayé de déployer Kubernetes Pods / Helm Chart avec Pulumi (Python)
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé de simuler la propagation de l'infection avec Python
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
J'ai essayé de créer diverses "données factices" avec Python faker
J'ai essayé différentes méthodes pour envoyer du courrier japonais avec Python
J'ai essayé d'envoyer un e-mail d'Amazon SES avec Python
Je veux faire quelque chose comme sort uniq en Python
J'ai essayé d'exécuter Movidius NCS avec python de Raspberry Pi3
J'ai essayé la gestion du suivi avec l'API Twitter et Python (facile)
Mayungo's Python Learning Episode 3: J'ai essayé d'imprimer des nombres
J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python
J'ai essayé de toucher Python (installation)
pyenv-vertualenv n'installe pas correctement la série python3