读写数据库
大多数情况下,海量的数据是使用数据库进行数据库进行存储的,这主要是依赖于数据库的数据结构化、数据共享性、独立性等特点。因此,在实际生产环境中,绝大多数的数据都是存储在数据库中。pandas支持MySQL、Oracle、SQLite等主流数据库的读写操作。
为了高效地对数据库中的数据进行读取,这里需要引入SQLAlchemy。SQLAlchemy是使用Python/ target=_blank class=infotextkey>Python编写的一款开源软件,它提供的SQL工具包和对象映像工具能够高效地访问数据库。在使用SQLAlchemy时需要使用相应的连接工具包,比如MySQL需要安装mysqlconnector,Oracle则需要安装cx_oracle。
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() 函数既可以读取整张数据表,又可以执行SQL语句,其语法格式如下:pandas.read_sql(sql,con,index_col=None,coerce_float=True,parmes=None,parse_dates=None,columns=None,chunksize=None)
常用参数的含义如下:
接下来,通过一个例子来演示如何使用read_sql()函数读取数据库中的数据表:
#上述中,首先导入了sqlalchemy模块,通过create_engine()函数创建连接数据库的信息,然后调用read_sql()函数读取数据库的student数据表,并转换成DataFrame对象
#在使用create_engine()函数创建连接时,格式为:"数据库类型+数据库驱动名称://用户名:密码@机器地址:端口号/数据库名"
to_sql()方法的功能是将Series和DataFrame对象以数据表的形式写入数据库中,语法为:to_sql(name,con,schema=None,if_exists=‘fail’,index=True,index_label=None,chunksize=None,dtype=None)
每个取值代表的含义如下:
fail:如果表存在,则不执行写入操作
replace :如果表存在,则将源数据表删除再重新创建
append:如果表存在,那么在原数据库表的基础上追加数据
#在使用to_sql()方法写入数据库时,如果写入的数据表名与数据库中其他的数据表名相同时,则返回该数据表已存在的错误