web-dev-qa-db-ja.com

Pandas MySQLにデータを挿入する

Pandas(Python))を使用して、.csvファイルから抽出したデータの列をMySQLに挿入しようとしています。

これが私がこれまで持ってきたコードです。

import pandas as pd
from pandas.io import sql
from sqlalchemy import create_engine
engine = create_engine('mysql://username:password@localhost/dbname')
with engine.connect() as conn, conn.begin():

df = pd.read_csv('File.csv', usercols=['ID', 'START_DATE'], skiprows=skip)
print(df)

df.to_sql(con=con, name='Table1', if_exists='replace', flavor='mysql')

ただし、Table1の特定の列名については触れていません。

それをどのように表現しますか?

5
Java

あなたのコードはこのように読むべきだと思います

import pandas as pd
from pandas.io import sql
from sqlalchemy import create_engine

df = pd.read_csv('File.csv', usercols=['ID', 'START_DATE'], skiprows=skip)
print(df)

engine = create_engine('mysql://username:password@localhost/dbname')
with engine.connect() as conn, conn.begin():
    df.to_sql('Table1', conn, if_exists='replace')

しかし、あなたの質問に関して、私がパンダを理解していると誤解しない限り、現在の列dfが何であれ、それらはmysqlテーブルの同じ名前の列に書き込まれます。

別の列名が必要な場合は、DataFrame内の列名を変更する必要があります

または 前述のパラメータ を使用します

index:ブール値、デフォルトはTrue
DataFrameインデックスを列として書き込みます。

index_label:文字列またはシーケンス、デフォルトはなし
インデックス列の列ラベル。 Noneが指定され(デフォルト)、indexがTrueの場合、インデックス名が使用されます

8
cricket_007

これは私のプロジェクトでやったことです

 import pandas as pd
 import sqlalchemy
 engine = sqlalchemy.create_engine('mysql+pymysql://root:@localhost/pd_test')

 ratings = pd.read_csv('ratings2.csv', sep='\t', encoding='latin-1',
                  usecols=['user_id', 'movie_id', 'user_emb_id', 
 'movie_emb_id','rating'])

 ratings.to_sql('test', con=engine, if_exists='append',index=False,chunksize=1)

この助けを願っています!!

2
Adnan shah