需要的环境
python、cx_Oracle第三方模块、orcale数据库
python-cx_oracle报错
python-cx_oracle报错"DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "
解决办法:https://blog.csdn.net/yuzh_test/article/details/78898159
python连接oracle数据库分以下步骤
1、与oracle建立连接;
2、获取游标;
3、执行sql语句;
4、fetch查询结果或commit修改结果;
5、关闭游标;
6、关闭oracle连接。
基本使用
import cx_Oracle # 导入模块
class perform_orcale(object):
def __init__(self):
self.conn = cx_Oracle.connect("用户名/密码@服务器地址/服务器名") # 连接orcale数据库方法1
# self.conn =cx_Oracle.connect('用户名','密码','服务器地址/服务器名') # 方法2,选择一种
self.cursor = self.conn.cursor() # 设置游标
def excute_sql(self):
pr = {"djxh":"122322"} # sql语句的参数
my_sql = """select * from my_table where djxh=:djxh""" # sql语句,后面带参数
cursor.execute(my_sql,pr) # 执行sql语句
def commit(self):
self.conn.commit()
def perform_result(self):
result = cursor.fetchall() # 取得执行结果
for r in result: # 遍历执行结果
print(r)
def close(self):
self.cursor.close()
self.conn.close()
if __main__ == "__name__":
test_orc = perform_orcale()
仅用于查询获得结果
fetchall() :获取所有结果集,返回元祖列表,如果没有有效行,返回空列表。
fetchone() :从数据库中取单个元祖,如果没有有效数据返回none。
其它用法参考(很全)
https://www.cnblogs.com/daisy89/p/5307727.html
使用过程中的疑点
在用 cx_Oracle 查询数据库的时候,有的时候查询出来的结果数字精度会莫名其妙的不对劲儿,例如,数据库中存的是 1503.87 ,字段类型为 number(18,2),而通过 cx_Oracle 查询出来的结果却是 1503.8700000000001