pythonoracle数据库连接池_python数据库模块-Cx_Oracle
Cx_oracle 7cx_Oracle是一个Python扩展模块,它允许Python访问Oracle数据库。用户通过调用python的cx_oracle函数,函数内部动态加载Oracle Client libraries以访问Oracle数据库。特性:cx_Oracle功能的亮点是:1.从PyPI轻松安装2.支持Python2和3以及多个Oracle数据库版本(支持Oracle客户端11.2、1
Cx_oracle 7
cx_Oracle
是一个
Python
扩展模块,它允许
Python
访问
Oracle
数据库。用户通过调用
python
的
cx_oracle
函数,函数内部动态加载
Oracle Client libraries
以访问
Oracle
数据库。
特性:
cx_Oracle
功能的亮点是:
1.
从
PyPI
轻松安装
2.
支持
Python2
和
3
以及多个
Oracle
数据库版本(支持
Oracle
客户端
11.2
、
12
、
18
和
19
。
Oracle
的标准跨版本互操作性,允许轻松升级和连接到不同的
Oracle
数据库版本。)
3.SQL
和
PL/SQL
语句的执行
4.
广泛的
Oracle
数据类型支持,包括大型对象(
CLOB
和
BLOB
)和
SQL
对象绑定
5.
连接管理,包括连接池
6.Oracle
数据库高可用性功能
7.
充分利用
Oracle
网络服务基础设施,包括加密网络流量和安全功能
入门
使用安装步骤安装
cx_Oracle
:
1.
使用
pip
安装
python -m pip install cx_Oracle --upgrade
2.
将
Oracle 19
、
18
、
12
或
11.2
客户端
client libraries
添加到操作系统库搜索路径中,如
Windows
上的
PATH
或
Linux
上的
LD_library_path
。在
macOS
上,将文件移动到
~/lib
或
/usr/local/lib
。
19, 18,12.2
版本的
client libraries
能连接
Oracle Database 11.2
及以上版本。
12.2
版本的
client libraries
能连接
Oracle Database 10.2
及以上版本。
11.2
版本的
client libraries
能连接
Oracle Database 9.2
及以上版本。
创建脚本
query.py
,如下所示:
# query.py
from __future__ import print_function
import cx_Oracle
# Establish the database connection
connection = cx_Oracle.connect("hr", userpwd, "dbhost.example.com/orclpdb1")
# Obtain a cursor
cursor = connection.cursor()
# Data for binding
managerId = 145
firstName = "Peter"
# Execute the query
sql = """SELECT first_name, last_name
FROM employees
WHERE manager_id = :mid AND first_name = :fn"""
cursor.execute(sql, mid = managerId, fn = firstName)
# Loop over the result set
for row in cursor:
print(row)
与数据库的简单连接需要用户名、密码和连接字符串。找到您的
Oracle
数据库用户名和密码以及数据库连接字符串,并在
query.py
中使用它们。
cursor
游标是允许执行语句和获取结果的对象。
:mid
及
:fn
是用到了
sql
的绑定变量,这将语句文本与数据分离,有助于避免
SQL
注入安全风险。
我们运行这个脚本,可得:
D:\dba>python query.py
('Peter', 'cat')
连接到
Oracle
数据库
建立数据库连接
使用
cx_Oracle
连接到
Oracle
数据库有两种方法:
独立连接
当应用程序维护到数据库的单个用户会话时。连接是由
cx_Oracle.connect
()或其别名
cx_Oracle.Connection
()创建的。
池连接
当应用程序频繁地连接和断开与数据库的连接时,连接池对于性能非常重要。池实现中的
Oracle
高可用性功能意味着,对于那些希望少数连接可供不经常使用的应用程序,小池也很有用。使用
cx_Oracle.SessionPool
()创建池,然后可以调用
SessionPool.acquire
()从池获取连接。
示例:与
Oracle
数据库的独立连接
import cx_Oracle
userpwd = ". . ." # Obtain password string from a user prompt or environment variable
connection = cx_Oracle.connect("hr", userpwd, "dbhost.example.com/orclpdb1", encoding="UTF-8")
当调用
Connection.close
()不再需要连接时,应释放连接。其中一种方法是使用“
with
”块,它可以确保连接在块完成后关闭。例如:
with cx_Oracle.connect(userName, password, "dbhost.example.com/orclpdb1",
encoding="UTF-8") as connection:
cursor = connection.cursor()
cursor.execute("insert into SomeTable values (:1, :2)",
(1, "Some string"))
connection.commit()
此代码确保块完成后,连接将关闭,数据库将回收资源。此外,任何试图在块外使用变量连接的尝试都将失败。
特权连接
下面的示例演示如何以
SYSDBA
身份连接到
Oracle
数据库:
connection = cx_Oracle.connect("sys", syspwd, "dbhost.example.com/orclpdb1",
mode=cx_Oracle.SYSDBA, encoding="UTF-8")
cursor = con.cursor()
sql = "GRANT SYSOPER TO hr"
cursor.execute(sql)
SQL
执行
执行
SQL
语句是
Python
应用程序与
Oracle
数据库通信的主要方式。语句使用
Cursor.execute
()或
Cursor.executemany
()方法执行。语句包括查询、数据操作语言(
DML
)和数据定义语言(
DDL
)。还可以执行其他一些特殊语句。
cx_Oracle
可用于执行单个语句,一次执行一个,不支持
sql
文件,如果需要的话,官方提供一个执行
sql
文件的函数,可以调用该函数实现执行
sql
文件的需求。
SQL
语句不应包含尾随分号(“;”)或正斜杠(“
/
”)
cur.execute("select * from MyTable")
SQL
查询
查询(以
SELECT
或
with
开头的语句)只能使用
Cursor.execute
()方法执行。然后可以迭代行,或者使用
Cursor.fetchone
()、
Cursor.fetchmany
()或
Cursor.fetchall
()方法之一获取行。
Fetch Methods
cur = connection.cursor()
cur.execute("select * from MyTable")
while True:
row = cur.fetchone()
if row is None:
break
print(row)
cur = connection.cursor()
cur.execute("select * from MyTable")
numRows = 10
while True:
rows = cur.fetchmany(numRows)
if not rows:
break
for row in rows:
print(row)
cur.fetchall()
cur = connection.cursor()
cur.execute("select * from MyTable")
rows = cur.fetchall()
for row in rows:
print(row)
更多推荐




所有评论(0)