Ich bin immer süchtig danach, von Python nach MySQL zu schreiben. Dieses Mal werde ich notieren, wovon ich süchtig bin.
Verwenden Sie Python, um Daten mit lokalem CSV lokal in MySQL oder MySQL mit Google Cloud PLatform zu schreiben.
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.
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()
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);
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
                    )
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