小豆子的笔记QAQ

导航

python连接数据-通过sid方式和服务名方式连接oracle数据库

前言:

oracle数据库创建的账号分为:服务名和sid

 

  • 一、使用sid进行连接
dns_tns = cx_Oracle.makedsn('191.168.0.333', '1521', sid='ORCL')
con = cx_Oracle.connect('mybatis', '11111', dns_tns)      #创建数据库连接
cur=con.cursor()    #设置游标
sql = "select * FROM TTRD_AUTH_USER"  #写sql语句
cur.execute(sql)      #执行sql语句
re = cur.fetchall()    #执行结果全部返回
re1 = cur.fetchone()     #执行结果只返回第一个
print(re)

二、使用服务名进行连接

con =cx_Oracle.connect('flowable000/123@172.19.6.25/test')
('账号/密码@url/服务名')
cur=con.cursor()
sql = "select * FROM TTRD_AUTH_USER"
cur.execute(sql)
re = cur.fetchall()
print(re)

总结:
若sid的创建方式使用二的方式连接,会报错

优化代码:
class SetDatabase():
# 直接设置数据库账号为正常
def set_user_statue(self):
self.cur = con_server_name.cursor()
self.sql = "UPDATE TTRD_AUTH_USER SET STATUS = 0 WHERE ACCOUNT = 'zyf_1'"
self.cur.execute(self.sql)
re = self.cur.fetchall()
print(re)




class DbConnect():
def __init__(self):
# 打开数据库连接
self.db = cx_Oracle.connect(' 账号/密码@191.168.0.83/orclcdb')
# 使用cursor()方法获取操作游标
self.cursor = self.db.cursor()

def select(self, sql):
# SQL 查询语句
# sql = "SELECT * FROM EMPLOYEE \
# WHERE INCOME > %s" % (1000)
self.cursor.execute(sql)
results = self.cursor.fetchall()
return results

def execute(self, sql):
# SQL 删除、提交、修改语句
# sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
# 执行SQL语句
self.cursor.execute(sql)
# 提交修改
self.db.commit()
except:
# 发生错误时回滚
self.db.rollback()

def close(self):
# 关闭连接
self.db.close()


if __name__ == '__main__':
data = "zyf_1"
delete_sql = "SELECT FLAG from TTRD_AUTH_USER where account = '{0}'".format(data)
try:
db = DbConnect()
re = db.select(delete_sql) # 查询
print(re)
db.close()
# print("success")
except Exception as msg:
print("execute sql error:%s"%str(msg))


posted on 2021-08-05 10:13  小豆子的笔记QAQ  阅读(769)  评论(0编辑  收藏  举报