[PYTHON] Punkte, die mich als MySQL-Anfänger oft begeistern

Ich bin immer süchtig danach, von Python nach MySQL zu schreiben. Dieses Mal werde ich notieren, wovon ich süchtig bin.

Bild des Implementierungsinhalts

Verwenden Sie Python, um Daten mit lokalem CSV lokal in MySQL oder MySQL mit Google Cloud PLatform zu schreiben.

Umgebung

Python3 mysql-connector GCP Cloud SQL (MySQL) (diesmal) Die Verbindungsmethode und die SSL-Konvertierung werden diesmal weggelassen. Es geht nur um die Sucht nach SQL-Anweisungen.

Code zum Schreiben

main.py


# -*- coding: utf-8 -*-
import os
import sys
import time
import glob
import shutil
import datetime
import logging
import traceback
import pandas as pd
import mysql.connector
import ssl
ssl.match_hostname = lambda cert, hostname: True
                
def insert_sql():
    schema = 'hogehoge2'#Datenbankname
    connection = mysql.connector.connect(
                        port="3306",#Grundsätzlich benutze ich diesen Port oft
                        host='**.**.**.**',#IP von gcp
                        user='hogehoge',
                        password='fugafuda',
                        db=schema,
                        charset='utf8',
                        ssl_ca="./cloudstorage_cert/server-ca.pem",#Ich möchte ein Zertifikat verwenden, geben Sie es diesmal in diesem Ordner an
                        ssl_cert="./cloudstorage_cert/client-cert.pem",
                        ssl_key="./cloudstorage_cert/client-key.pem"
    )
    
    df = pd.read_csv(filename,engine="python")
    for r in range(df.shape[0]):
        cur = connection.cursor()
        sql = "insert into schema.table (col1,col2,col3,col4) values ('%s','%s',%s,%s);"%(
                    datetime.datetime.now(),
                    str(datetime.datetime.now()),
                    100,
                    1.5
                )
        print(sql)
        cur.execute(sql)
        cur.close()
        connection.commit()
    connection.close()
    print("done")

if __name__ == '__main__':
    insert_sql()

Aufmerksamkeitspunkt

1. Beschreiben Sie beim Angeben der Tabelle das Schema (db) richtig

my.sql


Schlechtes Beispiel
insert into mytable (datetime,col2,col3,col4) values ('2020-10-20 10:39:13.252105','2020-10-20 10:39:13.252105',100,1.5);
Gutes Beispiel
insert into myshema.mytable (datetime,col2,col3,col4) values ('2020-10-20 10:39:13.252105','2020-10-20 10:39:13.252105',100,1.5);

2. Fügen Sie nicht numerische Zeichen wie Zeichenfolgen und Zeiten in einfache Anführungszeichen in SQL-Anweisungen ein.

example.py


#Schlechtes Beispiel
sql = "insert into myshema.mytable (datetime,col2,col3,col4) values (%s,%s,%s,%s);"%(
                    temp.loc[r,"DateTime"],
                    str(temp.loc[r,"DateTime"]),
                    100,
                    1.5
                    )
#Gutes Beispiel
sql = "insert into myshema.mytable (datetime,col2,col3,col4) values ('%s','%s',%s,%s);"%(
                    temp.loc[r,"DateTime"],
                    str(temp.loc[r,"DateTime"]),
                    100,
                    1.5
                    )

3. Daten werden nur wiedergegeben, wenn commit () für die Verbindung ausgeführt wird

Ich vergesse connection.close () nicht, aber manchmal vergesse ich connection.commit () und die Daten werden nicht aktualisiert. Nicht cur.commit (). Beachten Sie, dass commit () für die Verbindung gilt.

Ich bin süchtig nach dem oben genannten. Es funktionierte mit oder ohne; am Ende der SQL-Anweisung

Recommended Posts

Punkte, die mich als MySQL-Anfänger oft begeistern
Wörter, die mich als Programmieranfänger interessiert haben
Verdächtige Angriffe, die auftraten, als ich einen Blog über EC2 startete
Als Anfänger habe ich das Verzeichnis / proc durchsucht
Zusammenfassung der Punkte, die beim Schreiben eines Programms zu beachten sind, das unter Python 2.5 ausgeführt wird
Python-Bedingungsextraktion aus der Liste, die ich oft vergesse
Ich erhalte [Fehler 2055], wenn ich versuche, mit Heroku eine Verbindung zu MySQL herzustellen
Ich habe einen neuronalen Netzwerkgenerator erstellt, der auf FPGA läuft
Punkte, die über GORM gestolpert sind
Ich habe versucht, eine Serverumgebung zu erstellen, die unter Windows 10 ausgeführt wird
Führen Sie eine Java-App aus, die sich in AWS EC2 als Daemon befindet
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Ich habe versucht, MySQL auf einer virtuellen Linux-Maschine unter OCI Compute zu installieren