Pandas 将数据插入 MySQL

Pandas Insert data into 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')

但是,它没有提到表 1 中的具体列名..

我们如何表达?

我认为你的代码应该是这样的

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')

但是,关于你的问题,除非我对 Pandas 的理解有误,否则无论 df 目前有什么列,它们都将被写入与mysql table。

如果您需要不同的列名,您需要重命名 DataFrame 中的那些

或使用the parameters, as mentioned

index : boolean, default True
Write DataFrame index as a column.

index_label : string or sequence, default None
Column label for index column(s). If None is given (default) and index is True, then the index names are used

这就是我在项目中所做的

 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)

希望对您有所帮助!!