写出python执行多条oracle查询sql语句代码。其中需要来回关闭连接oracle么?
时间: 2023-11-24 22:05:13 浏览: 30
可以使用 Python 的 cx_Oracle 模块来执行多条 Oracle 查询 SQL 语句,并且需要在查询完成后关闭连接。
以下是示例代码:
```python
import cx_Oracle
# 连接数据库
dsn_tns = cx_Oracle.makedsn('hostname', 'port', service_name='service_name')
conn = cx_Oracle.connect(user='username', password='password', dsn=dsn_tns)
# 创建游标
cursor = conn.cursor()
# 执行 SQL 语句
sql1 = "SELECT * FROM table1"
cursor.execute(sql1)
sql2 = "SELECT * FROM table2"
cursor.execute(sql2)
# 获取查询结果
result1 = cursor.fetchall()
result2 = cursor.fetchall()
# 关闭游标和连接
cursor.close()
conn.close()
```
注意,在执行完每个 SQL 语句后,需要使用 `fetchall()` 方法获取查询结果。如果不关闭游标,可能会导致内存泄漏,因此需要在查询完成后使用 `close()` 方法关闭游标和连接。
相关问题
以通用类的形式写出python执行10条oracle查询sql语句通用代码
以下是一个示例通用类,可以执行Oracle查询SQL语句:
```python
import cx_Oracle
class OracleQuery:
def __init__(self, host, port, user, password, sid):
self.host = host
self.port = port
self.user = user
self.password = password
self.sid = sid
self.connection = None
def connect(self):
dsn_tns = cx_Oracle.makedsn(self.host, self.port, self.sid)
self.connection = cx_Oracle.connect(self.user, self.password, dsn_tns)
def query(self, sql):
cursor = self.connection.cursor()
cursor.execute(sql)
result = cursor.fetchall()
cursor.close()
return result
```
使用示例:
```python
oracle = OracleQuery('localhost', 1521, 'username', 'password', 'SID')
oracle.connect()
# 查询语句1
result1 = oracle.query('SELECT * FROM table1')
# 查询语句2
result2 = oracle.query('SELECT * FROM table2 WHERE column1 = "value"')
# 查询语句3
result3 = oracle.query('SELECT column1, column2 FROM table3 WHERE column3 > 10')
```
注意:需要安装`cx_Oracle`模块。
以通用类的形式写出python执行10条oracle查询sql语句通用代码,添加异常处理
下面是一个Python程序,可以执行10条Oracle查询SQL语句,其中包括异常处理:
```python
import cx_Oracle
# Oracle 数据库连接信息
db_host = 'localhost'
db_port = 1521
db_sid = 'ORCL'
db_username = 'scott'
db_password = 'tiger'
# Oracle 连接字符串
dsn = cx_Oracle.makedsn(db_host, db_port, db_sid)
conn = cx_Oracle.connect(db_username, db_password, dsn)
# 10条查询SQL语句
sql_list = [
"SELECT * FROM emp",
"SELECT * FROM dept",
"SELECT * FROM salgrade",
"SELECT * FROM bonus",
"SELECT * FROM job",
"SELECT * FROM loc",
"SELECT * FROM mgr",
"SELECT * FROM sal",
"SELECT * FROM tab",
"SELECT * FROM user_tab_cols"
]
# 执行查询并打印结果
for sql in sql_list:
try:
cursor = conn.cursor()
cursor.execute(sql)
rows = cursor.fetchall()
for row in rows:
print(row)
except cx_Oracle.Error as error:
print(f"查询 {sql} 出错,错误信息:{error}")
finally:
cursor.close()
# 关闭数据库连接
conn.close()
```
以上代码连接本地 Oracle 数据库,执行了10条查询SQL语句,并打印结果。如果有任何查询出错,它将捕获 `cx_Oracle.Error` 异常并打印错误信息。