Obwohl eine temporäre Tabelle in der Datenbank basierend auf den Daten des Datenrahmentyps im Stapel erstellt wurde Das 64. und nachfolgende Zeichen der Objekttyp-Spaltendaten verschwanden ohne Erlaubnis. Ich habe keine Fehler oder Warnungen erhalten, aber ...
Angenommen, Sie möchten eine Tabelle in der Datenbank basierend auf den folgenden Daten erstellen (Name ist 70 Zeichen).
sample.csv
name,age
AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEFFFFFFFFFFGGGGGGGGGG,20
AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEFFFFFFFFFFGGGGGGGGGG,18
AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEFFFFFFFFFFGGGGGGGGGG,23
AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEFFFFFFFFFFGGGGGGGGGG,21
sample_to_sql.py
import pandas as pd
import mysql.connector
df = pd.read_csv('sample.csv')
table_name = "sample_to_sql"
db_settings = {
"host": <Hostname>,
"database": <Name der Datenbank>,
"user": <Nutzername>,
"password": <Passwort>,
"port":3306
}
con = mysql.connector.connect(**db_settings)
df.to_sql(table_name, con, flavor='mysql', index=False)
Es ist ein wenig verwirrend, aber das 64. und nachfolgende Zeichen des Namens sind verschwunden.
Betrachten Sie die Tabelleninformationen
Das Limit beträgt 63 Zeichen ... Spalten vom Typ Objekt wurden fest codiert, um Tabellen mit varchar (63) zu erstellen. (Um Zeile 1310 von ~~~ / site-packages / pandas / io / sql.py)
Wenn ich das obige Skript ausführe, erhalte ich diese Warnung im Teil df.to_sql.
FutureWarning: The 'mysql' flavor with DBAPI connection is deprecated and will be removed in future versions. MySQL will be further supported with SQLAlchemy connectables.
Installieren Sie also sqlalchemy
sudo pip install sqlalchemy
sample_sqlalchemy.py
import pandas as pd
from sqlalchemy import create_engine
df = pd.read_csv('sample.csv')
table_name = "sample_sqlalchemy"
db_settings = {
"host": <Hostname>,
"database": <Name der Datenbank>,
"user": <Nutzername>,
"password": <Passwort>,
"port":3306
}
engine = create_engine('mysql://{user}:{password}@{host}:{port}/{database}'.format(**db_settings))
df.to_sql(table_name, engine, flavor='mysql', index=False)
Zu diesem Zeitpunkt wird eine Tabelle erstellt, die zum Inhalt des Datenrahmens passt. Wenn man den Inhalt betrachtet, sieht es so aus.
Was varchar war, war Text. Die Daten sind vorhanden.
Recommended Posts