python读取oracle数据库数据库_Oracle数据库之Python连接Oracle数据库

本文主要向大家介绍了Oracle数据库之Python连接Oracle数据库,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助。

Python连接Oracle数据库

下载cx_Oracle

在Python连接操作Oracle数据前,我们先要导入相应的模块包,Python有一个模块cx_Oracle可以与Oracle相连。

要使用cx_Oracle,就要先下载安装。我这里默认的是用windows系统,下载即点击这里,解压后直接打开.exe文件运行安装

验证安装是否正确:

运行 : import cx_Oracle

如果没有报错,则代表安装成功。

连接oracle数据库

在我们安装好cx_Oracle模块以后,并且导入对应的模块,然后来连接我们的数据,

验证是否连接成功,代码如下:

import cx_Oracleprint 'Ready: 'conn = cx_Oracle.connect('scott/tiger@localhost/orcl')print conn.version

对应结果:

这样,代表我们的python程序已经连接上了我们本机的数据了

执行SQL语句

下面我们来执行一些sql语句,看看能否在oracle中起作用:

我们·先创建空表:

create table person (

name nvarchar2(20),

age number,

address nvarchar2(30));select * from person;

然后执行我们的插入操作:

import cx_Oracle

conn = cx_Oracle.connect('scott/tiger@localhost/orcl')print conn.version

c=conn.cursor()

x=c.execute('insert into person(name,age,address) values(:1,:2,:3)',['Jim',23,'大连'])

conn.commit();

c.close()

conn.close()

print '大家好,大连'

如果出现中文乱码的现象,我们可以在python中加入这么一句话:

import os

os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

这样执行的话,我们的数据库中就新增了一条数据

下面我们已经在person表中插入多条数据,执行查询语句:

conn = cx_Oracle.connect('scott/tiger@localhost/orcl')print conn.version

c=conn.cursor()

sql = 'select * from person'c.execute(sql) #执行sql语句for x in c:    print x[0],x[1],x[2]

结果:

调用存储过程和函数

创建存储过程:

create or replace procedure p_updateAgeByName(iname in nvarchar2,myname out nvarchar2)isbegin

myname :=iname||',Good Morning';

end;

利用python执行存储过程:

conn = cx_Oracle.connect('scott/tiger@localhost/orcl')print conn.version

c = conn.cursor()

name = 'Joe'myname = c.var(cx_Oracle.STRING)

x = c.callproc('p_updateAgeByName',[name,myname])print mynameprint myname.getvalue()

c.close()

conn.close()

运行结果:

调用函数

import cx_Oracle

conn=cx_Oracle.connect('load/123456@localhost/ora11g')

c=conn.cursor()

str1='nice'                                     str2=c.callfunc('f_demo',cx_Oracle.STRING,[str1])print(str2)

c.close()

conn.close()

Python连接sqlserver数据库

import pymssqlclass MSSQL:    def __init__(self,host,user,pwd,db):

self.host = host

self.user = user

self.pwd = pwd

self.db = db    def __GetConnect(self):        if not self.db:            raise(NameError,"没有设置数据库信息")

self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")

cur = self.conn.cursor()        if not cur:            raise(NameError,"连接数据库失败")        else:            return cur    def ExecQuery(self,sql):

cur = self.__GetConnect()

cur.execute(sql)

resList = cur.fetchall()        #查询完毕后必须关闭连接        self.conn.close()        return resList    def ExecNonQuery(self,sql):

cur = self.__GetConnect()

cur.execute(sql)

self.conn.commit()

self.conn.close()

怎么执行呢?

ms = MSSQL(host="localhost",user="sa",pwd="1234",db="testdb")

sql = "   "#这里是sql语句

ms.ExecNonQuery(sql)

# -*- coding: gbk -*-import cx_Oracleimport math#连接Oracle数据库conn = cx_Oracle.connect('scott/tiger@127.0.0.1/orcl') #或者localhostprint 'Oracle数据连接OK'print '数据库的版本号是:',conn.version

c = conn.cursor()

sql = 'select * from emp'c.execute(sql)for x in c:    print x[0],x[1],x[2]#判断语句age = 33if age >= 18:    print 'adult'elif age >=6:    print 'teenager'else:    print 'children'#for循环语句names = ['Michael','Bob','Tracy']for name in names:    print namefor x in range(100): #0至99这一百个数

print x#while循环sum = 0

n = 99while n>0 :

sum = sum + n

n = n - 2print sum#raw_input等待输入birth = int(raw_input('please input your birth:'))if birth > 2000:    print '00后'else:    print '00前' #dict字典的使用d = {'Jim':95,'Bob':94,'Lucy':88}print d['Jim']#set 没有value,没有重复的keys=set([1,2,3,4,2,3,1,4])print s#定义函数def my_abs(x):    if not isinstance(x,(int,float)):        raise TypeError('bad operand type')    if x > 0:        return x    else:        return -xprint my_abs(-123)#函数返回多个值def move(x,y,step,angle=0):

nx=x+step*math.cos(angle)

ny=y-step*math.sin(angle)    return nx, ny

x,y=move(100,100,60,math.pi/6)print x,y

r = move(100,100,60)print rprint type(r)#可变参数函数   必选参数 默认参数 可变参数 关键字参数def calc(numbers):

sum = 0    for n in numbers:

sum = sum + n*n    return sumprint calc([1,3,5,7])  #需要传list或者tubedef calc2(*numbers):

sum = 0;    for n in numbers:

sum = sum + n*n    return sumprint calc2(1,3,5,7) #可以传可变参数#如果已经存在list,也可以作为参数num=[1,2,3]print calc2(*num)#递归函数def fact(n):    if n==1:        return 1    return n*fact(n-1)print fact(1)print fact(5)

本文由职坐标整理并发布,希望对同学们学习Oracle有所帮助,更多内容请关注职坐标数据库Oracle数据库频道!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python,我们可以使用第三方库cx_Oracle读取Oracle数据库。首先,需要安装cx_Oracle库,并确保已经设置好了Oracle客户端。接下来,可以按照以下步骤读取Oracle数据库: 1. 首先,导入必要的库: ```python import cx_Oracle ``` 2. 使用cx_Oracle.connect()函数连接Oracle数据库,需要提供数据库的用户名、密码和连接字符串: ```python connection = cx_Oracle.connect('username', 'password', 'connection_string') ``` 请将'username'替换为您的Oracle数据库用户名,'password'替换为您的密码,'connection_string'替换为正确的连接字符串。 3. 创建一个游标对象,用于执行SQL查询: ```python cursor = connection.cursor() ``` 4. 使用cursor.execute()方法执行您的SQL查询。例如,如果您要查询名为"employees"的表的所有记录,可以执行以下代码: ```python cursor.execute('SELECT * FROM employees') ``` 5. 使用cursor.fetchall()方法获取查询结果。例如,如果您想将查询结果存储在一个变量: ```python results = cursor.fetchall() ``` 现在,您可以使用results变量来处理查询结果。 6. 最后,不要忘记关闭游标和数据库连接: ```python cursor.close() connection.close() ``` 这样就完成了从Oracle数据库读取数据的过程。请确保您已经按照上述步骤正确安装和配置了cx_Oracle库,并提供了正确的数据库连接信息。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [PythonOracle数据库获取数据——fetchall(),fetchone(),fetchmany()函数功能分析](https://blog.csdn.net/qq_28268527/article/details/128629153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [使用Python代码调用命令行来执行MySQL数据库备份和恢复操作](https://download.csdn.net/download/weixin_44609920/88222336)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值