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() 函数的参数,以便正确地连接到你的目标数据库。

更多推荐