Pandas将数据插入MySQL

Jav*_*ava 5 python csv mysql-python python-2.7 pandas

我试图使用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')
Run Code Online (Sandbox Code Playgroud)

但是,它没有提到表1中的特定列名.

我们如何表达这一点?

cri*_*007 8

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

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')
Run Code Online (Sandbox Code Playgroud)

但是,关于你的问题,除非我对Pandas的理解有误,无论df目前有哪些列,这些都将被写入mysql表的同名列.

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

或者使用参数,如上所述,

index:boolean,默认True
Write DataFrame索引作为列.

index_label:字符串或序列,默认值无
索引列的列标签.如果给出None(默认值)且index为True,则使用索引名称