Python-Handspiel (CSV wird mit Pandas DataFrame angewendet, aber nur vollständige Spalte Von CSV in DB einfügen?)

Was ist dieser Artikel?

Es wird gesagt, dass Pandas DataFrame CSV anwendet, aber von CSV zu DB nur alle Spalten einfügen? Also habe ich eine Funktion zum Aktualisieren (UPDATE) von DataFrame zu DB erstellt.

Zum ersten Mal zuvor habe ich Pandas DataFrame ernsthaft verwendet. Dann wusste ich, dass to_csv plötzlich den Wert von DB in CSV konvertieren konnte und sagte: "Oh, großartig!". .. ..

Was ist dann das Gegenteil? Was ist zum Beispiel, wenn Sie von DB in CSV exportieren möchten und ein externes Tool den CSV-Wert bearbeitet und ihn wiedergibt?

Nun, wenn Sie darüber nachdenken, was denken Sie über Primärschlüssel? Aus diesem Grund unterstützen die allgemeinen Spezifikationen, die von OSS in eine Bibliothek umgewandelt werden, diese nicht. Nun, vielleicht geht es darum, SQL ehrlich anzuwenden.

Also habe ich einen Nischenprozess gemacht.

Mit anderen Worten, was hast du gemacht?

Prozess zum Aktualisieren, indem Pandas DataFrame, Primärschlüssel und zu aktualisierende Spalten angegeben werden.

Ein Listentyp mit einem Zeichenfolgentyp als Primärschlüssel und mehreren Zeichenfolgen als Aktualisierungszielspaltengruppe. Es fühlt sich an, als würde man SQL erstellen und festschreiben, das den großen Gewinndatensatz mit der als Primärschlüssel angegebenen Zeichenfolge angibt und die anderen Spalten zur Zielspalte von SET of UPDATE macht.

Das war's. Nun, es ist eine besiegte Version, daher gibt es verschiedene Einschränkungen.

Beschränkungen

・ Der Primärschlüssel besteht aus einer Spalte ・ Verschiedene Spalten sind fest (Primärschlüssel ist Zeichen, andere sind Float) ・ DB ist PostgreSQL · Andere ...

Fertigstellung



def get_connection_string():
    hostname = localhost
    port = '5432'
    database = 'db01'
    username = 'user01'
    password = 'manager'
    return f'postgresql://{username}:{password}@{hostname}:{port}/{database}'


def get_cur():
    conn = psycopg2.connect(get_connection_string())
    cur = conn.cursor()
    return conn, cur
    
#aktualisieren
# I :Zu aktualisierende Daten
#Primärschlüsselspalte
#Zu aktualisierende Spalten
def update_data(df, column_key, columns):
    import pandas as pd
    conn, cur = get_cur()

    for i in range(len(df)):
        paras = list()
        col_sqls = list()
        for column in columns:
            paras.append(float(df.at[i, column]))
            col_sqls.append(f' {column} = %s ')
        sql = f'''
            UPDATE
                    RDKIT
            SET
                    {','.join(col_sqls)}
            WHERE
                    SampleName = '{df.at[i, 'samplename']}'
        '''
        print(sql)
        print(paras)
        cur.execute(sql, paras)

    conn.commit()


#Schreiben Sie von CSV in DB
def test05():
    import pandas as pd
    df = pd.read_csv('abc.csv')
    # df = pd.read_csv('edited.csv')

    column_key = 'samplename'
    columns = ['maxestateindex', 'maxabsestateindex', 'heavyatommolwt', 'exactmolwt', 'qed', 'molwt']
    update_data(df, column_key, columns)


#Export von DB nach CSV
def test06():
    import pandas as pd

    sql = f'''
        SELECT
                SampleName
              , MaxEStateIndex, MaxAbsEStateIndex, HeavyAtomMolWt, ExactMolWt, qed, MolWt
        FROM
                RDKIT
    '''
    conn, cur = get_cur()
    df = pd.read_sql(sql=sql, con=conn)
    df.to_csv('exported.csv')


def main():
    test05()
    # test06()


if __name__ == '__main__':
    main()

Impressionen

Hmm ... nicht gut genug. Es gibt ein Gefühl der Niederlage. Lassen Sie uns zu einem späteren Zeitpunkt etwas mehr darüber nachdenken. .. ..

Recommended Posts

Python-Handspiel (CSV wird mit Pandas DataFrame angewendet, aber nur vollständige Spalte Von CSV in DB einfügen?)
Python-Handspiel (Pandas / DataFrame-Beginn)
Python-Handspiel (RDKit-Deskriptorberechnung: SDF zu CSV mit Pandas)
Lesen Sie die CSV-Datei mit Python und konvertieren Sie sie unverändert in DataFrame
[Python] Erstellen Sie eine Tabelle von Pandas DataFrame zu Postgres
Generieren Sie mit Python eine Einfügeanweisung aus CSV.
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
[Python] Ein Memo zum vertikalen Schreiben von CSV mit Pandas
Python-Handspiel (Spaltennamen aus CSV-Datei abrufen)
Konvertieren Sie mit Python für .NET von Pandas DataFrame in System.Data.DataTable
Lesen Sie CSV mit Python-Pandas
[Python] Mit Python in eine CSV-Datei schreiben
Ausgabe in eine CSV-Datei mit Python
Konvertieren Sie die Liste mit Python in DataFrame
Bulk Insert Pandas DataFrame mit psycopg2
[Data Science-Grundlagen] Ich habe versucht, mit Python von CSV auf MySQL zu speichern
[Python] So konvertieren Sie eine Datenbankdatei in CSV
[Python] Was ist Pandas Series und DataFrame?
Python nur mit Hallo, Welten zu erinnern
Konvertieren Sie mit pdfplumber von PDF in CSV
Fraktal zum Erstellen und Spielen mit Python
Ich möchte mit aws mit Python spielen
[Python] Fügen Sie Pandas DataFrame insgesamt Zeilen hinzu
[Teil1] Scraping mit Python → Organisieren Sie bis zu CSV!
Python> Ausgaben von 1 bis 100, 501 bis 600> Für CSV
Laden Sie csv mit Pandas und spielen Sie mit Index
Batch-Einfügung von einer CSV-Datei in eine Tableau-Hyperdatei mit dem PostgreSQL-ähnlichen Befehl COPY