cx_Oracle_async
A very simple asynchronous wrapper that allows you to get access to the Oracle database in asyncio programs.
Easy to use , buy may not the best practice for efficiency concern.
Requirements
- cx_Oracle >= 8.1.0 (Take into consideration that author of cx_Oracle said he's trying to implement asyncio support , APIs maybe change in future version. Switch to 8.1.0 if there's something wrong makes it not gonna work.)
- ThreadPoolExecutorPlus >= 0.2.0
Install
pip install cx_Oracle_async
Feature
- Nearly all the same as aiomysql in asynchronous operational approach , with limited cx_Oracle feature support.
- No automaticly date format transition built-in.
- AQ feature added , check docs here for further information.
- You can modify some of the connection properties simply like you're using cx_Oracle.
- You can do basic insert / select / delete etc.
- If you're connecting to database which is on a different machine from python process , you need to install oracle client module in order to use this library. Check cx-Oracle's installation guide for further information.
Documentation
https://cx_oracle_async.readthedocs.io
Performance
| query type | asynchronous multithreading | synchronous multithreading | synchronous single thread |
|---|---|---|---|
| fast single line query | 6259.80 q/s | 28906.93 q/s | 14805.61 q/s |
| single line insertion | 1341.88 q/s | 1898 q/s | 1685.17 q/s |
/* Test platform: */
AMD Ryzen 3700x
Windows 10 LTSC
Oracle 19c
You can find performance test codes here.
Examples
Before running examples , make sure you've already installed a Oracle Client on your machine.
# basic_usages.py
import asyncio
import cx_Oracle_async
async def main():
oracle_pool = await cx_Oracle_async.create_pool(
host='localhost',
port='1521',
user='user',
password='password',
service_name='orcl',
min = 2,
max = 4,
)
async with oracle_pool.acquire() as connection:
async with connection.cursor() as cursor:
await cursor.execute("SELECT * FROM V$SESSION")
print(await cursor.fetchall())
await oracle_pool.close()
if __name__ == '__main__':
asyncio.run(main())
Metadata
Release files for cx-Oracle-async 0.3.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cx_Oracle_async-0.3.3.tar.gz | 8.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cx_Oracle_async-0.3.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.9 kB
Release files / cx_Oracle_async-0.3.3.tar.gz
| Download URL | cx_Oracle_async-0.3.3.tar.gz |
|---|---|
| Size | 8.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
12515563210d52e2d58c3df39a708eef4e3bd21d856c54635821bca43d870b1f
|
|
BLAKE2b-256 checksum How to use checksums |
d187fe75e196c5570749ae228b6b85b78b0d887d412e54c504642f46f4eef857
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.8.12
|
Release files / cx_Oracle_async-0.3.3-py3-none-any.whl
| Download URL | cx_Oracle_async-0.3.3-py3-none-any.whl |
|---|---|
| Size | 11.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1eee2a2405cb6700da4efc094b0f3c5217afc406bc4e9404f794f2c0bd713999
|
|
BLAKE2b-256 checksum How to use checksums |
d0ef4c7767c9917e5d25ed6c780ee82a251ac83a569d725310e7db0bcde5a064
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.8.12
|