Python连接数据库的方式有很多 此处是较为简单的一种
- 导包
import pandas as pd
from sqlalchemy import create_engine
- create_engine就可以实现连接数据了(连接oracle)
orengine = create_engine("oracle://USER:PASSWORD@IP/orcl", encoding='utf-8', echo=True)
- 读取数据库中的数据(此为SQL)
sql = r'''SELECT * FROM table_name '''
df = pd.read_sql(sql,orengine)
- 到此数据库的连接和读取都可以实现了 接下来就可以一些操作了(Python定时读取A数据库存入到B数据库实现自动备份数据)
from threading import Timer
import os
# 将数据导入到pg数据库
def importpostgr():
os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.AL32UTF8'
# 连接两个数据库
orengine = create_engine("oracle://USER:PASSWORD@IP/orcl", encoding='utf-8', echo=True)
# postgre数据库
pgengine = create_engine('postgresql://USER:PASSWORD@IP:5432/database_name')
# 查询条件SQL
sql1 = '''SELECT * FROM table_name1 '''
sql2 = '''SELECT * FROM table_name2 '''
sql3 = '''SELECT * FROM table_name3 '''
# 查询oracle数据库
df1 = pd.read_sql(sql1,orengine)
df2 = pd.read_sql(sql2,orengine)
df3 = pd.read_sql(sql3,orengine)
# 开始写入pg数据库
print('start import postgresql')
# create_table_name 导入到pg数据库中你要创建的表名
df1.to_sql('create_table_name1',pgengine,index=True,if_exists='replace')
df2.to_sql('create_table_name2',pgengine,index=True,if_exists='replace')
df3.to_sql('create_table_name3',pgengine,index=True,if_exists='replace')
print('import postgresql successfully')
# 定时写入
t = Timer(3600,importpostgr)
t.start()
try:
Timer(1200,importpostgr).start()
except:
print('停止定时导入pg数据库')
- 当然以上写法是较为不严谨的 比如oracle的锁表 异常 网络 等等等 待完善....