如何在数据库中使用cx_oracle
连接
导入cx_Oracle # 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()
#使用位置对应参数 cursor.execute('select * from scott.t1 where DEPTNO = :1',(10,)) print(游标.fetchall()) cursor.close() ora.close () |
查询
#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) cursor.execute('select * from dba_objects') resCount=0 p> 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') p> # 使用字符串传入用户名、密码等 # 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') p> 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的对象类型之间存在转换关系
Oracle | cx_Oracle | Python |
VARCHAR2、NVARCHAR2、LONG | cx_Oracle.STRING | str |
CHAR | cx_Oracle.FIXED_CHAR | str |
NUMBER | cx_Oracle.NUMBER | int |
FLOAT | cx_Oracle.NUMBER | 浮点 |
日期 | cx_Oracle.DATETIME | datetime.datetime |
TIMESTAMP | cx_Oracle.TIMESTAMP | datetime.datetime |
cx_Oracle.CLOB< /td> | cx_Oracle.LOB | |
BLOB | cx_Oracle.BLOB | cx_Oracle.LOB | tr>
获取中文乱码
导入os os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' #or os. environ['NLS_LANG'] = 'AMERICAN_AMERICA.AL32UTF8' |
感谢您的阅读!这篇关于《如何在数据库中使用cx_oracle》的文章就分享到这里。希望以上内容能够给大家带来一些帮助,让大家能够学到更多的知识。如果您觉得文章不错,可以分享给其他人。让更多的人人们看到了!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何在数据库中使用cx_oracle