DataFrame 对象导入mysql数据库
·
DataFrame 对象导入mysql数据库
方法一 pd.io.sql.to_sql():
pd.io.sql.to_sql() 是 pandas 库中用于将 DataFrame 数据写入 SQL 数据库的函数。以下是对其中的参数进行解释:
table: 要写入数据库的 DataFrame 数据。name: 数据库表的名称。con: 数据库连接对象。可以是 SQLAlchemy 引擎、数据库连接字符串或数据库连接对象。例如,你可以使用engine参数传递一个 SQLAlchemy 引擎对象。if_exists: 写入表中数据的行为。可选值为'fail'、'replace'或'append'。默认值为'fail',表示如果表已存在,则引发异常。'replace'表示如果表已存在,则先删除表再写入数据。'append'表示如果表已存在,则在现有表的末尾追加数据。如果表不存在,则会自动创建表并写入数据。index: 写入数据时是否包含 DataFrame 的索引。默认为True,表示将索引列写入数据库表中;设置为False则不写入索引列。
# MySQL数据库连接信息
host = 'localhost' # 数据库主机地址
port = 13306 # 数据库端口,默认为3306
username = 'root' # 数据库用户名
password = 'xxxx' # 数据库密码
database = 'xxxx' # 数据库名称
charset = 'utf8mb4' # 数据库字符集
# 创建MySQL数据库连接字符串
connection_string = f'mysql+pymysql://{username}:{password}@{host}:{port}/{database}?charset={charset}'
# 创建数据库引擎
engine = create_engine(connection_string)
table_commom = pd.read_csv(r'./universities_cleaned.csv') #dataframe数据所在位置
# 将数据写入sql
# index = False:不导入索引列
# if_exists (默认为'fail'): 控制目标表存在时的行为。可选值包括:
# 'fail': 如果表已存在,则引发异常。
# 'replace': 删除现有表并替换为新表。
# 'append': 将新数据添加到现有表中
# index (默认为True): 是否将DataFrame的索引作为一列写入SQL表。布尔值。
pd.io.sql.to_sql(table_commom, 'universities', con=engine, if_exists='append', index=False)
成功:

方法二 to_sql:
DataFrame 对象的 to_sql() 方法用于将数据写入 SQL 数据库表中。以下是 to_sql() 方法的一般语法和参数解释:
DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None)
name: 数据库表的名称。con: 数据库连接对象。可以是 SQLAlchemy 引擎、数据库连接字符串或数据库连接对象。schema: 可选参数,指定数据库的模式(schema)名称。if_exists: 写入表中数据的行为。可选值为'fail'、'replace'或'append'。默认值为'fail',表示如果表已存在,则引发异常。'replace'表示如果表已存在,则先删除表再写入数据。'append'表示如果表已存在,则在现有表的末尾追加数据。如果表不存在,则会自动创建表并写入数据。index: 写入数据时是否包含 DataFrame 的索引。默认为True,表示将索引列写入数据库表中;设置为False则不写入索引列。index_label: 可选参数,指定索引列的名称。默认为None,使用默认的索引列名称。chunksize: 可选参数,指定每次写入数据库的数据块大小。默认为None,表示将整个 DataFrame 作为一次性写入。dtype: 可选参数,指定每列的数据类型。默认为None,表示由数据库自动推断数据类型。
df=pd.read_csv(r'./universities_cleaned.csv')
# 用户名:密码 地址 :端口 数据库名
engine = create_engine('mysql://root:hu123@localhost:13306/dbtest1') # 连接 MySQL 数据库
df.to_sql(name='demo', con=engine, if_exists='replace', index=False) # 将 dataframe 存储为 MySQL 表
成功!

补充:
create_engine() 是 SQLAlchemy 库中的一个函数,用于创建数据库引擎对象,以便连接到各种类型的数据库。
语法:
create_engine(database_url, **kwargs)
参数:
database_url:数据库连接字符串,指定了连接数据库所需的信息,包括数据库类型、用户名、密码、主机地址、端口号等。**kwargs:可选的关键字参数,用于进一步配置数据库引擎。
返回值:
- 返回一个 SQLAlchemy 引擎对象,用于连接到指定的数据库。
create_engine() 函数的 database_url 参数是一个字符串,遵循特定的格式。具体格式取决于所连接的数据库类型。例如,对于连接到 MySQL 数据库,可以使用以下格式:
'mysql://username:password@host:port/database'
其中:
username:数据库用户名password:数据库密码host:数据库主机地址port:数据库端口号(可选,默认为数据库默认端口)database:数据库名称
你可以根据所连接的数据库类型和相应的连接字符串格式来调整 create_engine() 函数的参数,以便正确地连接到你的目标数据库。
更多推荐



所有评论(0)