将包含列名的 pandas DataFrame 转储为 "name" 到 mysql table
Dump a pandas DataFrame which contains column name as "name" to mysql table
我正在尝试使用 pandas 和 to_sql 将我抓取的数据转储到 mysql。
我正在以两种方式接近
1>
{# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
import MySQLdb
from sqlalchemy import create_engine
import os
from pandas.io import sql
import MySQLdb
columns_list= ['persons','c_number','name']
df = pd.DataFrame()
file_name = "/home/*****/****/data.xlsx"
data = pd.read_excel(file_name)
df = df.append(data)
df.columns = columns_list
engine=create_engine('mysql+mysqldb://root:root@localhost:3306/database_name?charset=utf8&use_unicode=1', echo=False)
con = MySQLdb.connect(host="localhost",user="user_name",passwd="password", db="database_name")
df.to_sql(con=con, name='table_name',if_exists='replace',flavor='mysql')}
这里我得到 TypeError: to_sql() got multiple values for keyword argument 'name' error
2>
import numpy as np
import pandas as pd
import MySQLdb
from sqlalchemy import create_engine
import os
columns_list= ['persons','c_number','name']
df = pd.DataFrame()
file_name = "data.xlsx"
data = pd.read_excel(file_name)
df = df.append(data)
df_n = pd.DataFrame()
df = df_n.append(df_new)
df = np.array_split(df, 100)
for x in range(len(df_new)):
print x
engine = create_engine('mysql+mysqldb://user_name:password@localhost:3306/database_name?charset=utf8&use_unicode=1', echo=False)
df[x].to_sql(name='table_name', con=engine, if_exists = 'append', index=False)
engine.dispose()
这样我就可以转储数据,但是我在所有记录中的名称字段都为空。
有没有办法使用列名转储数据"name"
我认为您在 to_sql
方法中写了 df
,所以我认为您那里有错字,请尝试:
df.to_sql(con=con, name='table_name',if_exists='replace',flavor='mysql')
I have faced the similar situation before and i don't know the exact reason why it happens but here is something that worked for me.
我像你一样用 read_excel 读取了数据框,并用修改后的列名重写了 excel 文件。
writer = pd.ExcelWriter("data_new.xlsx")
data.to_excel(writer,'sheet1')
writer.save()
然后我推送到数据库。希望对你也有用。
我正在尝试使用 pandas 和 to_sql 将我抓取的数据转储到 mysql。
我正在以两种方式接近 1>
{# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
import MySQLdb
from sqlalchemy import create_engine
import os
from pandas.io import sql
import MySQLdb
columns_list= ['persons','c_number','name']
df = pd.DataFrame()
file_name = "/home/*****/****/data.xlsx"
data = pd.read_excel(file_name)
df = df.append(data)
df.columns = columns_list
engine=create_engine('mysql+mysqldb://root:root@localhost:3306/database_name?charset=utf8&use_unicode=1', echo=False)
con = MySQLdb.connect(host="localhost",user="user_name",passwd="password", db="database_name")
df.to_sql(con=con, name='table_name',if_exists='replace',flavor='mysql')}
这里我得到 TypeError: to_sql() got multiple values for keyword argument 'name' error
2>
import numpy as np
import pandas as pd
import MySQLdb
from sqlalchemy import create_engine
import os
columns_list= ['persons','c_number','name']
df = pd.DataFrame()
file_name = "data.xlsx"
data = pd.read_excel(file_name)
df = df.append(data)
df_n = pd.DataFrame()
df = df_n.append(df_new)
df = np.array_split(df, 100)
for x in range(len(df_new)):
print x
engine = create_engine('mysql+mysqldb://user_name:password@localhost:3306/database_name?charset=utf8&use_unicode=1', echo=False)
df[x].to_sql(name='table_name', con=engine, if_exists = 'append', index=False)
engine.dispose()
这样我就可以转储数据,但是我在所有记录中的名称字段都为空。
有没有办法使用列名转储数据"name"
我认为您在 to_sql
方法中写了 df
,所以我认为您那里有错字,请尝试:
df.to_sql(con=con, name='table_name',if_exists='replace',flavor='mysql')
I have faced the similar situation before and i don't know the exact reason why it happens but here is something that worked for me.
我像你一样用 read_excel 读取了数据框,并用修改后的列名重写了 excel 文件。
writer = pd.ExcelWriter("data_new.xlsx")
data.to_excel(writer,'sheet1')
writer.save()
然后我推送到数据库。希望对你也有用。