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.
- 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
pip install cx_Oracle_async
- 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.
|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
You can find performance test codes here.
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())