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 | Provenance | Actions |
|---|---|---|---|---|
| cx_Oracle_async-0.3.3.tar.gz | 8.8 kB | Without provenance | Details for cx_Oracle_async-0.3.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| cx_Oracle_async-0.3.3-py3-none-any.whl | Python 3 | none | any | Details for cx_Oracle_async-0.3.3-py3-none-any.whl |
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
|
Security for cx-Oracle-async 0.3.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.