---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
#!/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
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