读写数据库

pandans中读写数据库方法

大多数情况下,海量的数据是使用数据库进行数据库进行存储的,这主要是依赖于数据库的数据结构化、数据共享性、独立性等特点。因此,在实际生产环境中,绝大多数的数据都是存储在数据库中。pandas支持、Oracle、SQLite等主流数据库的读写操作。

为了高效地对数据库中的数据进行读取,这里需要引入SQLAlchemy。SQLAlchemy是使用/ target=_blank class=infotextkey>Python编写的一款开源软件,它提供的SQL工具包和对象映像工具能够高效地访问数据库。在使用SQLAlchemy时需要使用相应的连接工具包,比如MySQL需要安装mysqlconnector,Oracle则需要安装cx_oracle。

 


 

这里简单介绍几种安装mysqlconnector的方法

1. pip install mysql-connector
2. conda install mysql-connector
#注意如果都安装不成功,可能是python环境或anaconda环境配置没配好,可以试试重新安装软件或者配置文件

 


 

pandas.io.sql模块常用的函数

1. read_sql_table() : 将读取的整张数据表的数据转换成DataFrame对象

2. read_sql_query() :将SQL语句读取的结果转换成DataFrame对象

3. read_sql() :上述两个函数的结合,既可以读数据表也可以读SQL语句

4. to_sql():将数据写入到SQL数据库中

 


 

一、使用read_sql()函数读取数据

read_sql() 函数既可以读取整张数据表,又可以执行SQL语句,其语法格式如下:pandas.read_sql(sql,con,index_col=None,coerce_float=True,parmes=None,parse_dates=None,columns=None,chunksize=None)


 

常用参数的含义如下:

  • sql:表示被执行的SQL语句
  • con:接收数据库连接,表示数据库的连接信息
  • index_col:默认为None,如果传入一个列表,则表示为层次化索引
  • coerce_float:将非法字符串、非数字对象的值转换为浮点数类型
  • params:传递给执行方法的参数列表,如params={'name':'values'}
  • columns:接收list表示读取数据的列名,默认为None

 

接下来,通过一个例子来演示如何使用read_sql()函数读取数据库中的数据表:

 

#上述中,首先导入了sqlalchemy模块,通过create_engine()函数创建连接数据库的信息,然后调用read_sql()函数读取数据库的student数据表,并转换成DataFrame对象

#在使用create_engine()函数创建连接时,格式为:"数据库类型+数据库驱动名称://用户名:密码@机器地址:端口号/数据库名"

 


 

read_sql()函数执行sql语句时的例子:

 

 


 

二 、使用to_sql()方法将数据写入数据库中

to_sql()方法的功能是将Series和DataFrame对象以数据表的形式写入数据库中,语法为:to_sql(name,con,schema=None,if_exists=‘fail’,index=True,index_label=None,chunksize=None,dtype=None)

 

  • name:表示数据库的名称
  • con:表示数据库的连接信息
  • if_exists:可以取值为fail、replace或end,默认为fail

 

每个取值代表的含义如下:

fail:如果表存在,则不执行写入操作

replace :如果表存在,则将源数据表删除再重新创建

append:如果表存在,那么在原数据库表的基础上追加数据

  • index:表示是否将DataFrame行索引作为数据传入数据库,默认为True
  • index_label:表示是否引用索引名称。如果index设为True,此参数为None,则使用默认名称;如果index为层次化索引,则使用序列类型

 

接下来,通过一个例子来演示如何使用to_sql()函数将DataFrame对象写入到名称为students数据表中:

 


 

#在使用to_sql()方法写入数据库时,如果写入的数据表名与数据库中其他的数据表名相同时,则返回该数据表已存在的错误

 


 

作者:今日头条 KJ丶JK /CSDN-KJ.JK

胜象大百科