如何在数据库中使用cx_oracle

分类:编程技术 时间:2024-02-20 16:02 浏览:0 评论:0
0
本文将与大家分享如何在数据库中使用cx_oracle。小编觉得还是比较实用的,所以分享给大家,作为参考。下面就跟随小编来看看吧。

连接

导入cx_Oracle


< p>#使用 tnsnames 文件别名链接

# ora = cx_Oracle.connect('scott/tiger@orcl')


#Use字符串,传入参数链接

# ora = cx_Oracle.connect('scott/tiger@192.168.56.152:1521/orcl')


# 使用字符串传入用户名、密码等

# ora = cx_Oracle.connect('scott','tiger','192.168.56.152:1521/orcl')

>


# 使用dsn解析为tns字符串并连接数据库

# tnsname = cx_Oracle.makedsn('192.168.56.152', '1521','orcl')

# ora = cx_Oracle.connect('scott','tiger',tnsname)


#使用sysdba或其他角色链接

ora = cx_Oracle.connect('sys','oracle','192.168.56.152:1521/orcl',mode=cx_Oracle.SYSDBA)



cursor = ora.cursor()


< /p>

#使用位置对应参数

cursor.execute('select * from scott.t1 where DEPTNO = :1',(10,))

print(游标.fetchall())



cursor.close()

ora.close ()

查询

< /tbody>

#fetchall

导入cx_Oracle


ora = cx_Oracle.connect('scott/tiger@192.168.56.152:1521/orcl')< /p>

cursor = ora.cursor()


cursor.execute('select * from emp')

< br/>

print(cursor.fetchall())


cursor.close()

ora. close()

#fetchone

导入cx_Oracle


ora = cx_Oracle.connect('scott/tiger@192.168.56.152:1521/orcl')

cursor = ora.cursor()


cursor.execute('从 emp 中选择 *')


while 1:

res = curve.fetchone( )

如果 res == None:

中断

print(res)


cursor.close()

ora.close()

# fetchmany


#使用dsn解析成tns字符串并连接数据库

tnsname = cx_Oracle.makedsn('192.168. 56.151','1521','orcl')

ora = cx_Oracle.connect('system','oracle',tnsname)


< p>cursor = ora.cursor()


cursor.execute('select * from dba_objects')

resCount=0

while 1:

res =cursor.fetchmany(10)

if res == []:

break

< p> print(res)

resCount += 10


cursor.close()

ora.close ()


#使用绑定变量

导入cx_Oracle


ora = cx_Oracle.connect('scott/tiger@192.168.56.152:1521/orcl')

cursor = ora.cursor()< /p>


#使用位置对应参数

cursor.execute('select * from t1 where DEPTNO = :1',(10,))

print(cursor.fetchall())


# 使用字典传入参数

param={'dno':20}

cursor.execute('select * from t1 where DEPTNO = :dno',param)

print(cursor.fetchall())< /p>

cursor.execute('select * from t1 where DEPTNO = :dno or DNAME=:dn',dno=40,dn='ACCOUNTING')

print(cursor.fetchall( ))


cursor.close()

ora.close()

添加、删除、修改数据并多次执行

导入cx_Oracle


#使用tnsnames文件别名链接

# ora = cx_Oracle.connect('scott/tiger @orcl')

< br/>

#使用字符串,传入参数链接

# ora = cx_Oracle.connect('scott/tiger @192.168.56.152:1521/orcl')


# 使用字符串传入用户名、密码等

# ora = cx_Oracle.connect('scott','tiger', '192.168.56.152:1521/orcl')


#使用dsn解析成tns字符串并连接数据库

tnsname = cx_Oracle. makedsn('192.168.56.152','1521','orcl')

ora = cx_Oracle.connect('scott','tiger',tnsname)


#使用sysdba或其他角色链接

# ora = cx_Oracle.connect('sys','oracle ','192.168.56.152:1521/orcl',mode=cx_Oracle.SYSDBA)

cursor = ora.cursor()


cursor.execute('insert into t1 value(50,:1,:2) ',('DBA','CHINA')) #在sql中使用参数


ora.commit()


cursor.execute('从t1中选择*')

while 1:

res =cursor.fetchone()

if res == None:

break

print(res)



cursor.close()

ora.close()

导入cx_Oracle


#使用tnsnames文件别名链接

# ora = cx_Oracle.connect( 'scott/tiger@orcl')


#使用字符串传递输入参数链接

# ora = cx_Oracle.connect('scott /tiger@192.168.56.152:1521/orcl')


# 使用字符串分别传入用户名和密码

# ora = cx_Oracle.connect('scott','tiger','192.168.56.152:1521/orcl')


# 使用dsn解析成tns字符串并连接数据库

tnsname = cx_Oracle.makedsn('192.168.56.152','1521','orcl')

< p>ora = cx_Oracle.connect('scott','tiger',tnsname)


#使用sysdba或其他角色链接


p>

# ora = cx_Oracle.connect('sys','oracle','192.168.56.152:1521/orcl',mode=cx_Oracle.SYSDBA)

cursor = ora.cursor()


cursor.prepare('update t1 set LOC=:loc where DEPTNO=:dno')

cursor.execute(None, {'loc':'BEIJING','dno':50}) #使用prepare函数,可以直接传入execute中的参数,无需传入sql语句。注意:这里第一个参数必须为None


ora.commit()


Cursor.execute('select * from t1')

while 1:

res =cursor.fetchone()

if res == None:

p>

break

print(res)



cursor.close( )

ora.close()

导入cx_Oracle


#使用 tnsnames文件别名链接

# ora = cx_Oracle.connect('scott/tiger@orcl ')


#使用字符串并传递在参数链接中

# ora = cx_Oracle.connect('scott/tiger@192.168 .56.152:1521/orcl')


# 使用字符串传入用户名、密码等

# ora = cx_Oracle. connect('scott','tiger','192.168.56.152:1521/orcl')


# 使用dsn解析成tns字符串并连接数据库

tnsname = cx_Oracle.makedsn('192.168.56.152','1521','orcl')

ora = cx_Oracle.connect('scott','tiger',tnsname )


#使用sysdba或其他角色链接

# ora = cx_Oracle.connect('sys','oracle','192.168 .56.152 :1521/orcl',mode=cx_Oracle.SYSDBA)

cursor = ora.cursor()


#执行多条语句

list1 = [(60,'工程师','悉尼'),(70,'潜水员','南非')]

cursor.prepare('插入t1 value(:1,:2,:3)')

cursor.executemany(None,list1) #使用prepare函数,可以直接传入t执行时只传入参数,不传入sql语句。注意:这里第一个参数必须为None


ora.commit()


Cursor.execute('select * from t1')

while 1:

res =cursor.fetchone()

if res == None: / 关闭()

ora.close()

调用函数和存储过程

#调用存储过程

cursor.callproc(name,parameters=[],keywordParameters={})

#调用函数

cursor.callfunc(name, returnType,parameters=[],keywordParameters={})

#cx_Oracle.STRING

cx_Oracle和Python的对象类型之间存在转换关系

< td>CLOB
Oraclecx_OraclePython
VARCHAR2、NVARCHAR2、LONG cx_Oracle.STRINGstr
CHARcx_Oracle.FIXED_CHAR str
NUMBERcx_Oracle.NUMBERint
FLOAT cx_Oracle.NUMBER 浮点
日期cx_Oracle.DATETIME datetime.datetime
TIMESTAMPcx_Oracle.TIMESTAMPdatetime.datetime
cx_Oracle.CLOB< /td>cx_Oracle.LOB
BLOBcx_Oracle.BLOBcx_Oracle.LOB

获取中文乱码

导入os

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

#or os. environ['NLS_LANG'] = 'AMERICAN_AMERICA.AL32UTF8'

感谢您的阅读!这篇关于《如何在数据库中使用cx_oracle》的文章就分享到这里。希望以上内容能够给大家带来一些帮助,让大家能够学到更多的知识。如果您觉得文章不错,可以分享给其他人。让更多的人人们看到了!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何在数据库中使用cx_oracle

用户评论