我正在尝试使用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中的特定列名。
我们如何表达?
答案 0 :(得分:6)
我认为你的代码应该是这样读的
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表的同名列。
如果您需要不同的列名称,则需要重命名DataFrame中的列名称
或使用the parameters, as mentioned,
index :布尔值,默认为True 将DataFrame索引写为列。
index_label :字符串或序列,默认无
索引列的列标签。如果给出None(默认值)且index为True,则使用索引名称
答案 1 :(得分:1)
这就是我在项目中所做的
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)
希望得到帮助!