Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'asyncpg' in functional components in Python. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
@tb.with_connection_options(server_settings={
'client_min_messages': 'notice'
})
async def test_log_listener_01(self):
q1 = asyncio.Queue()
def notice_callb(con, message):
# Message fields depend on PG version, hide some values.
dct = message.as_dict()
del dct['server_source_line']
q1.put_nowait((con, type(message), dct))
async def raise_notice():
await self.con.execute(
"""DO $$
BEGIN RAISE NOTICE 'catch me!'; END;
$$ LANGUAGE plpgsql"""
# Copyright (C) 2016-present the asyncpg authors and contributors
#
#
# This module is part of asyncpg and is released under
# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0
import asyncpg
from asyncpg import _testbase as tb
class TestTransaction(tb.ConnectedTestCase):
async def test_transaction_regular(self):
self.assertIsNone(self.con._top_xact)
self.assertFalse(self.con.is_in_transaction())
tr = self.con.transaction()
self.assertIsNone(self.con._top_xact)
self.assertFalse(self.con.is_in_transaction())
with self.assertRaises(ZeroDivisionError):
async with tr as with_tr:
self.assertIs(self.con._top_xact, tr)
self.assertTrue(self.con.is_in_transaction())
# We don't return the transaction object from __aenter__,
# to make it harder for people to use '.rollback()' and
# '.commit()' from within an 'async with' block.
# Copyright (C) 2016-present the asyncpg authors and contributors
#
#
# This module is part of asyncpg and is released under
# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0
import asyncio
from asyncpg import _testbase as tb
from asyncpg import exceptions
class TestListeners(tb.ClusterTestCase):
async def test_listen_01(self):
async with self.create_pool(database='postgres') as pool:
async with pool.acquire() as con:
q1 = asyncio.Queue()
q2 = asyncio.Queue()
def listener1(*args):
q1.put_nowait(args)
def listener2(*args):
q2.put_nowait(args)
await con.add_listener('test', listener1)
await con.add_listener('test', listener2)
await con1.remove_listener('12+"34', listener1)
async def test_dangling_listener_warns(self):
async with self.create_pool(database='postgres') as pool:
with self.assertWarnsRegex(
exceptions.InterfaceWarning,
'.*Connection.*is being released to the pool but '
'has 1 active notification listener'):
async with pool.acquire() as con:
def listener1(*args):
pass
await con.add_listener('ipc', listener1)
class TestLogListeners(tb.ConnectedTestCase):
@tb.with_connection_options(server_settings={
'client_min_messages': 'notice'
})
async def test_log_listener_01(self):
q1 = asyncio.Queue()
def notice_callb(con, message):
# Message fields depend on PG version, hide some values.
dct = message.as_dict()
del dct['server_source_line']
q1.put_nowait((con, type(message), dct))
async def raise_notice():
await self.con.execute(
"""DO $$
# We don't return the transaction object from __aenter__,
# to make it harder for people to use '.rollback()' and
# '.commit()' from within an 'async with' block.
self.assertIsNone(with_tr)
await self.con.execute('''
CREATE TABLE mytab (a int);
''')
1 / 0
self.assertIsNone(self.con._top_xact)
self.assertFalse(self.con.is_in_transaction())
with self.assertRaisesRegex(asyncpg.PostgresError,
'"mytab" does not exist'):
await self.con.prepare('''
SELECT * FROM mytab
@tb.with_connection_options(server_settings={
'client_min_messages': 'notice'
})
async def test_log_listener_02(self):
q1 = asyncio.Queue()
cur_id = None
def notice_callb(con, message):
q1.put_nowait((con, cur_id, message.message))
con = self.con
await con.execute(
"CREATE FUNCTION _test(i INT) RETURNS int LANGUAGE plpgsql AS $$"
" BEGIN"
" RAISE NOTICE '1_%', i;"
" PERFORM pg_sleep(0.1);"
async def _init_db(self):
self._connection = await asyncpg.connect(self.dsn)
async def delete_method_data():
conn = await asyncpg.connect(database=__DB_NAME)
await conn.execute('''DELETE from foglamp.tasks WHERE process_name IN ('testsleep30', 'echo_test')''')
await conn.execute(''' DELETE from foglamp.schedules WHERE process_name IN ('testsleep30', 'echo_test')''')
await conn.execute(''' COMMIT''')
await conn.close()
await asyncio.sleep(14)
async def test_prepare_28_max_args(self):
N = 32768
args = ','.join('${}'.format(i) for i in range(1, N + 1))
query = 'SELECT ARRAY[{}]'.format(args)
with self.assertRaisesRegex(
exceptions.InterfaceError,
'the number of query arguments cannot exceed 32767'):
await self.con.fetchval(query, *range(1, N + 1))
async def test_prepare_30_invalid_arg_count(self):
with self.assertRaisesRegex(
exceptions.InterfaceError,
'the server expects 1 argument for this query, 0 were passed'):
await self.con.fetchval('SELECT $1::int')
with self.assertRaisesRegex(
exceptions.InterfaceError,
'the server expects 0 arguments for this query, 1 was passed'):
await self.con.fetchval('SELECT 1', 1)