pandas读写oracle数据库

1.包准备

需要用到sqlalchemy,主要是配合pandas读取

需要用到cx_Oracle,主要是做oracle连接的驱动
2.连接方式
 1 import cx_Oracle
 2 from sqlalchemy import create_engine
 3 import json
 4 import pandas as pd
 5 import os 
 6 import sqlalchemy
 7 
 8     #创建连接
 9     def create_oracle_connect(self,host,user_name,password,port,database):
10         connect_info='oracle+cx_oracle://%s:%s@%s:%s/%s' %(user_name,password,host,port,database)
11         oracle_engine=create_engine(connect_info,encoding='utf-8')
12         return oracle_engine

3.读取数据

1 data=pd.read_sql_query(sql,self.engine)

读取出来以后是dataframe的格式,字段名都是小写

4.插入、写入数据

1 df.to_sql(table_name, self.engine, index=False, if_exists='append', dtype=type_list)

需要把要插入的数据整理成df

然后oracle的数据类型和pandas数据类型是不统一的,除了sting类型,其他都需要转一下,靠

dtype这个参数,传入一个字段对应类型的字典,类似:
1 {'act_no':sqlalchemy.Integer(),'created_time':sqlalchemy.DateTime()}

具体有哪些类型,可以看看sqlalchemy的文档

如果字段允许为空,想传入空字段,可以传一个Python里的None

 

5.注意事项

oracle sql里字符串都要加引号,如果是Python外部变量传入字符串,%s也要引号起来。

oracle sql里对应更改数据类型的函数,如to_date,在进行比较或者等操作的时候,sql里需要保证左右的变量类型一致

sql最好用三引号引起来,最好不要换行

6.批量update数据,待整理

posted @ 2022-07-13 20:42  stAr_1  阅读(1567)  评论(0编辑  收藏  举报