读写数据库

大多数情况下,海量的数据是使用数据库进行数据库进行存储的,这主要是依赖于数据库的数据结构化、数据共享性、独立性等特点。因此,在实际生产环境中,绝大多数的数据都是存储在数据库中。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()方法写入数据库时,如果写入的数据表名与数据库中其他的数据表名相同时,则返回该数据表已存在的错误










