因为最近频繁操作数据库,特别是写入数据比较麻烦。在DataFrame格式或者是Series格式的数据处理之后,总是会面临写入数据,迫不得已只能进行格式转换,搜索过程中发现了to_sql()函数,就百度了用法,并实现了一下,以下记录操作过程和遇到的问题及解决方法。
First:函数介绍
to_sql(frame, name, con, schema=None, if_exists='fail', index=True,
index_label=None, chunksize=None, dtype=None)
frame:dataframe数据的名字
name:需要操作的数据库的表名
con:连接数据库的语句,包括(localhost,root,password,database)
if_exists:(fail,replace,append)
fail:如果表存在,则不进行操作
replace:如果表存在就删除表,重新生成,插入数据
append:如果表存在就插入数据,不存在就直接生成表
在使用这个函数之前我们需要用到create_engine
- 该数据里边,root:root是用户名和密码,localhost是地址,test是数据库。
- 因为我之前一直用的pymysql,有人跟我说不用安装mysqldb,直接在mysql+pymysql就行,我的实验是成功了,但是可能因为之前就成功了,才成功的,你们可以试试。
我的环境是python3.6的Spyder工具,因为好多人都说MySqlDb在3.6的环境下没有了,都让安装mysqlclient,我这里的安装时1.3.13版本的。安装时我直接下载的https://www.lfd.uci.edu/~gohlke/pythonlibs/的文件:
因为找了好多教程,我还安装了mysql-python,导致版本冲突。后来卸载了,又重新安装mysqlclient才运行成功。
安利一个好用的函数:
read_sql_query()
sql:需要操作的语句,
con:数据库的连接
直接可以在数据库中读取dataframe格式的数据,也方便读操作和pandas分析。
Second:增加Oracle版本
参考网址:
https://docs.sqlalchemy.org/en/13/dialects/oracle.html#module-sqlalchemy.dialects.oracle.cx_oracle
代码: