很抱歉,这可能是一个简单的问题。我已经与熊猫合作了一段时间,并且没有将Excel文件加载到MSSQL的麻烦,但是,我无法为mysql弄清楚。我无法下载MySQLdb软件包,因此我安装了mysql软件包并使用了mysql.connector,如下所示:
原始代码
import pandas as pd
import mysql.connector as mysql
data = pd.read_excel(r"[my file path]")
df = pd.DataFrame(data, columns=['Name', 'country', 'age', 'gender'])
conn = mysql.connect('Driver={SQL Server};'
'Server=[my server name];'
'Database=[my database];'
'Trusted_Connection=yes;')
cursor = conn.cursor()
print(df)
for row in df.itertuples():
cursor.execute('''
INSERT INTO [database].dbo.[table] (Name, country, age, gender)
VALUES (?,?,?,?)
''',
row.Name,
row.country,
row.age,
row.gender
)
conn.commit()
不确定要执行所有操作该怎么做。
有效的代码
import mysql.connector
import pandas as pd
conn= mysql.connector.connect(user='[username]', password='[password]', host='[hostname]', database='[databasename]')
cursor = conn.cursor()
excel_data = pd.read_excel(r'[filepath]',sep=',', quotechar='\'')
for row in excel_data.iterrows():
testlist = row[1].values
cursor.execute("INSERT INTO [tablename](Name, Country, Age, Gender)"
" VALUES('%s','%s','%s','%s')" % tuple(testlist))
conn.commit()
cursor.close()
conn.close()
更简洁的代码也有效
import pandas as pd
from sqlalchemy import create_engine, types
engine = create_engine('mysql://root:[password]@localhost/[database]') # enter your password and database names here
df = pd.read_excel(r"[file path]",sep=',',quotechar='\'',encoding='utf8') # Replace Excel_file_name with your excel sheet name
df.to_sql('[table name]',con=engine,index=False,if_exists='append') # Replace Table_name with your sql table name
答案 0 :(得分:1)
Pandas具有用于处理SQL数据库的number of great functions。一旦您从excel阅读,创建了df
并连接到数据库,就可以使用:
df.to_sql("table_name", conn, if_exists='replace', index=False)
,数据库表的列将自动创建。当然,您可以访问上面的链接并使用其他参数。另外,请记住使用conn.close()
关闭数据库连接。
编辑:想通了,我还将添加如何简单地从数据库中读取数据框。
df = pd.read_sql("SELECT * FROM table_name", conn)
希望这会有所帮助!
答案 1 :(得分:0)
除了使用已经提到的数据框外,我还想添加一点。我不确定是否可以安装mysql workbench。如果是这样,它为您提供了一种将csv文件导入到mysql数据库中的简便方法。希望这也有帮助!