我最近从使用SQLite来满足我的大部分数据存储和管理需求过渡到了MySQL。我想我终于安装了正确的库来使用Python3.6,但是现在我在从MySQL数据库中的数据帧创建新表时遇到了麻烦。
下面是我导入的库:
import pandas as pd
import mysql.connector
from sqlalchemy import create_engine在我的代码中,我首先从CSV文件创建一个dataframe (这里没有问题)。
def csv_to_df(infile):
return pd.read_csv(infile)然后,我使用这个def函数建立到MySQL数据库的连接:
def mysql_connection():
user = 'root'
password = 'abc'
host = '127.0.0.1'
port = '3306'
database = 'a001_db'
engine = create_engine("mysql://{0}:{1}@{2}:{3}/{4}?charset=utf8".format(user, password, host, port, database))
return engine最后,我使用pandas函数"to_sql“在MySQL数据库中创建数据库表:
def df_to_mysql(df, db_tbl_name, conn=mysql_connection(), index=False):
df.to_sql(con = conn, name = db_tbl_name, if_exists='replace', index = False)我使用下面这行代码运行代码:
df_to_mysql(csv_to_df(r'path/to/file.csv'), 'new_database_table')将产生以下错误:
InvalidRequestError: Could not reflect: requested table(s) not available in Engine(mysql://root:***@127.0.0.1:3306/a001_db?charset=utf8): (new_database_table)我认为这告诉我,在将数据帧中的数据传递到这个表之前,我必须首先在数据库中创建一个表,但我对此并不是百分之百肯定。无论如何,我正在寻找一种在MySQL数据库中创建表的方法,而无需首先手动创建表(我有许多CSV,每个CSV都有50+字段,它们必须作为MySQL数据库中的新表上传)。
有什么建议吗?
https://stackoverflow.com/questions/51236304
复制相似问题