---Zweck--- Lesen Sie tägliche Änderungen wie Inventarinformationen aus der Datenbank und geben Sie sie in die angegebenen Daten ein Exportieren Sie im angegebenen Format.
Verwendeter Interpreter: Python3.8
--- Arbeitsumgebung des Posters --- Windows10Pro 64Bit
#!/usr/bin/env python
# -*- coding: utf-8 -*-
###Modul verwendet###
import sqlite3
import pandas as pd
import datetime
######Zeitstempel holen
ThisDate = datetime.datetime.today().strftime("%Y%m%d")
#CurStocks <<Variable für den Datenrahmen, der die Datenbank des referenzierenden Bestandsstamms enthält
######Konvertieren Sie den Bestandsinformationsstamm in den Bestandsreferenzdatenrahmen
#Hier werden die Daten der Referenzquelle aus der Datei im SQlite3-Format gezogen.
#Konvertieren Sie Ihr Lieblingsformat mit Pandas in einen Datenrahmen.
dbpath = 'C:/Referenzquelle/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", "Produktname", "Produkt-CD", "Barcode", "Lager"]
conn.close()
#(Anmerkungen) ↑ Die obige Methode "Cursor".fetchall()""
#Der Titel der Spalte wird weggelassen, daher werde ich ihn später hinzufügen.
#Die Referenzquellendaten basieren auf dem obigen Spaltentitel.
######Bereiten Sie eine Datei im Sqlite-Format zum Gießen vor
print("● Aktualisieren Sie die Inventarkontaktdatei")
dbpath = 'C:/Gießziel/Kunde_Lager FMT.db'
conn = sqlite3.connect(dbpath)
df_files=("C:/Gießen Sie die Zielbasisdatei/Kunde_Lager FMT.xlsx")
#Ich erstelle eine separate Liste von Zielen in der Excel-Datei, aber in diesem Fall erhöht sich die Anzahl der Zielelemente usw.
#Aufgrund der Methode, eine Basisliste mit einer Excel-Datei zu erstellen und zur einfachen Wartung neu zu schreiben
df = pd.read_excel(df_files,encoding="cp932")
Chlist = (df["JAN"].transpose())
#df["JAN"].transpose()<<Die Daten von "JAN" werden so konvertiert, dass sie einzeln gelesen werden können.
#Die Spalte des Gießziels erhält den Titel "JAN", der der Leseschlüssel ist.
######Die Daten für die Bestandsreferenz werden nacheinander gedreht und referenziert.
for item in Chlist:
CurStocksult = CurStocks.query('Barcode== @item')
#Hier beziehen wir uns auf den JAN-Code, der der Schlüssel des zuvor erstellten Referenzquellendatenrahmens ist, und drehen ihn um.
#Referenzquellenspalte: "Barcode" Gießziel: Spaltentitel "JAN"
#Hier werden wir nacheinander aus dem Referenzquellendatenrahmen lesen.
if len(CurStocksult) >= 1:
#Bestandszählung: Wenn der Referrer-Frame über die JAN verfügt, beziehen Sie sich auf die Datenposition.
CurStocksult = (CurStocksult.iat[0, 3])
#Indexnummer abrufen (Datenposition der Liste des sekundären Arrays)
DFindex=int(df.query('JAN == @item').index.astype("int64").values[0])
if(CurStocksult) < 3 :
Buf = 0
df.iat[DFindex, 7] = "Mangel"
else:
Buf=CurStocksult
df.iat[DFindex, 7] = ""
df.iat[DFindex, 6]=Buf
df.iat[DFindex, 8]=ThisDate
#Die 6. Spalte des Gießziels ist die Lagerspalte, die 7. Spalte ist die Flaggenspalte und die 8. Spalte ist der aktualisierte Zeitstempel.
df.to_sql("Stock_Data", conn, if_exists="replace")
df.to_csv('C:/Aktualisierte Inventardaten.csv')
#Sqlite und CSV wurden aktualisiert.
conn.close()
print("● Update abgeschlossen")
del df
del df_files
1: Erstellen Sie eine Liste für die Schleifenverarbeitung Chlist = (df["JAN"].transpose()) Um die Liste der Gießziele einzeln zu verarbeiten, die Schlüsselliste der Gießziele Ich habe es so konvertiert, dass es in einer Schleife gedreht werden kann
2: Erfassung der Indexnummer DFindex=int(df.query('JAN == @item').index.astype("int64").values[0]) Konvertierungsprozess zum Abrufen der Datenposition (Y-Achse?) Aus der Liste der quadratischen Arrays
Recommended Posts