博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python操作oracle数据库
阅读量:7053 次
发布时间:2019-06-28

本文共 3470 字,大约阅读时间需要 11 分钟。

hot3.png

包含:oracle数据库在Windows操作系统下的安装和配置、python需要安装的第三方拓展包以及基本操作的样例学习。及脚本展示

1          Oracle数据库

1.1       Oracle环境配置&客户端连接

1.1.1          下载安装Oracle绿色版客户端instantclient:

到oracle官网下载instantclient basic包,解压缩到E:\ProgramFile\instantclient;

1.1.2          设置环境变量:

  • NLS_lANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK(注意中间有空格,这个如果不设,toad查询中文会是乱码)
  • TNS_ADMIN= E:\ProgramFile\instantclient
  • Path=...;E:\ProgramFile\instantclient

1.1.3     配置tnsnames.tns文件:

在E:\ProgramFile\instantclient下建立文件tnsnames.ora,将下面内容粘贴进该文件:

*** =

  (DESCRIPTION =

    (ADDRESS_LIST =

   (ADDRESS = (PROTOCOL = TCP)(HOST= ***)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

     (SERVICE_NAME = ***)

    )

  )

注:图中红色部分根据自己需要进行更改。

1.1.4          配置PL/SQL Developer进行连接:

在tools/preference里,oracle-connection选项配置oracle home和oci library:

  • oracle home:E:\ProgramFile\instantclient
  • oci library:E:\ProgramFile\instantclient\oci.dll

 

配置完成,可以重启 plsql developer,输入正确的用户名和密码就可以连接啦~~~

1.2       python连接oracle数据库

1.2.1          安装cx_Oracle包:

  需要注意下版本,根据操作系统和已安装的python版本进行选择

 

自行选择版本,下载后直接执行即可

 

 

1.2.2          安装后的验证:

import cx_Oracle没有报错:

 

备注:如果import cx_Oracle 时报错提示找不到OCI.DLL,解决方法:到装了Oracle的机器上找一个,然后copy到Libsite-packages目录下即可。

1.3       Python连接oracle数据库的基本操作

1.3.1          创建数据库连接connect和关闭数据库连接close

创建数据库连接的三种方式:

方法一:用户名、密码和监听分开写

import cx_Oracle

db=cx_Oracle.connect('username/password@host/orcl')

db.close()

 

方法二:用户名、密码和监听写在一起

import cx_Oracle

db=cx_Oracle.connect('username','password','host/orcl')

db.close()

 

方法三:配置监听并连接

import cx_Oracle

tns=cx_Oracle.makedsn('host',1521,'orcl')

db=cx_Oracle.connect('username','password',tns)

db.close()

 

1.3.2          建立cursor并执行SQL语句:查询、更新、插入、删除

1.3.2.1         创建数据库连接,创建游标cursor,然后执行sql语句,执行完成后,关闭游标,关闭数据库连接

创建连接后,建立cursor,并执行SQL语句

 

1.3.2.2         插入、更新、删除操作后需要提交commit

#coding:utf-8

import smtplib

from email.mime.multipart import MIMEMultipart # python2.4及之前版本该模块不是这样调用的,而是email.MIMEMultipart.MIMEMultipart(),下同

from email.mime.text import MIMEText

from email.utils import parseaddr,formataddr

from email.header import Header

import cx_Oracle

import datetime

import time

 

conn = cx_Oracle.connect('*******************')

cursor = conn.cursor ()

cursor.execute("select SAVETIME from t_sms_interface_record order by SAVETIME desc")

row = cursor.fetchone()

# print row,type(row),len(row)

for i in row:

i =i.strftime("%Y%m%d%H%M%S")

print i,type(i),len(i)

 

l_time = time.strftime("%Y%m%d%H%M%S", time.localtime())

print l_time,type(l_time),len(l_time)

 

localtime1=time.strptime(i,'%Y%m%d%H%M%S')

localtime2=time.strptime(l_time,'%Y%m%d%H%M%S')

 

print type(localtime1),localtime1

print type(localtime2),localtime2

 

time1= time.mktime(localtime1)

time2= time.mktime(localtime2)

 

print type(time1),time1

print type(time2),time2

 

time_1 = time2-time1

 

print time_1

 

time_1 = time_1 //60

 

print time_1

 

if time_1 >30:

sender = '**********'#发件人地址

receiver = ['*********']#收件人地址

smtpserver = 'smtp.exmail.qq.com'#邮件服务器

username = '**************'#用户名

password = '***************'#密码 # qq邮箱打开,点击账户,中间偏下位置打开smtp服务器时会自动生成

smtp = smtplib.SMTP()

msgRoot = MIMEMultipart('related')

# msgRoot['To'] = _format_addr(u'%s' % receiver)

msgRoot['to'] = '%s' % receiver

msgRoot['Subject'] = '反欺诈数据报' #邮件标题,这里我把标题设成了你所发的附件名

msgText = MIMEText('%s' %'hello python','html','utf-8')#你所发的文字信息将以html形式呈现

msgRoot.attach(msgText)

while 1:#持续尝试发送,直到发送成功

try:

smtp.sendmail(sender, receiver, msgRoot.as_string())#发送邮件

print '***********'

break

except:

try:

smtp.connect(smtpserver)#连接至邮件服务器

smtp.login(username, password)#登录邮件服务器

except:

print "failed to login to smtp server"#登录失败

 

 

cursor.close ()

conn.close ()

 

 

 

转载于:https://my.oschina.net/u/3708232/blog/1551162

你可能感兴趣的文章
curl 命令详解
查看>>
启动改为本地Ip
查看>>
云服务器CentOS7.5安装MySQL5.7
查看>>
代理模式
查看>>
vue文档阅读笔记——计算属性和侦听器
查看>>
单元测试系列:Mock工具之Mockito实战
查看>>
二手GTX650
查看>>
Guava学习-缓存
查看>>
hexSHA1散列加密解密(不可逆)
查看>>
Pinterest架构:两年内月PV从零到百亿 - 非常值得参考【转】 - HorsonJin - 博客园...
查看>>
编译时、运行时、构建时(一)
查看>>
Java 基础:Queue
查看>>
CentOS环境下安装jdk和tomcat
查看>>
“密码保护共享”关不掉
查看>>
统计英文文章单词数相关内容
查看>>
第十六周项目3-逆序输出数组
查看>>
PowerDesigner15.1创建模型及生成带注释sql操作手册
查看>>
Vue.js 插件开发
查看>>
Least Angle Regression
查看>>
Ftp服务端安装-Linux环境
查看>>