Closed
Description
- asyncpg version: 0.12.0
- PostgreSQL version: 9.6
- Python version: 3.6.2
- Platform: ubuntu 16.04
- Do you use pgbouncer?: yes
- Did you install asyncpg with pip?: yes
- Can the issue be reproduced under both asyncio and
uvloop?: don't know
Hello! I'm trying to use asyncpg with pgbouncer. I've set statement_cache_size=0
but I still get errors. What am I doing wrong?
In [1]: import os, asyncpg, asyncio
In [2]: loop = asyncio.get_event_loop()
In [3]: conn = loop.run_until_complete(asyncpg.connect(
...: host = 'pgaas.mail.yandex.net',
...: port = 12000,
...: user = 'statinfra_api',
...: database = 'statinfra_api_beta',
...: password=os.environ['DB_PASSWORD'],
...: ssl=True,
...: statement_cache_size=0
...: ))
In [4]: loop.run_until_complete(conn.fetch('SELECT * FROM tasks'))
---------------------------------------------------------------------------
InvalidSQLStatementNameError Traceback (most recent call last)
<ipython-input-5-8a44237acb87> in <module>()
----> 1 loop.run_until_complete(conn.fetch('SELECT * FROM tasks'))
/usr/lib/python3.6/asyncio/base_events.py in run_until_complete(self, future)
465 raise RuntimeError('Event loop stopped before Future completed.')
466
--> 467 return future.result()
468
469 def stop(self):
~/.virtualenvs/statbox-abt-backend/lib/python3.6/site-packages/asyncpg/connection.py in fetch(self, query, timeout, *args)
339 """
340 self._check_open()
--> 341 return await self._execute(query, args, 0, timeout)
342
343 async def fetchval(self, query, *args, column=0, timeout=None):
~/.virtualenvs/statbox-abt-backend/lib/python3.6/site-packages/asyncpg/connection.py in _execute(self, query, args, limit, timeout, return_status)
1186 timeout = self._protocol._get_timeout(timeout)
1187 with self._stmt_exclusive_section:
-> 1188 return await self._do_execute(query, executor, timeout)
1189
1190 async def _executemany(self, query, args, timeout):
~/.virtualenvs/statbox-abt-backend/lib/python3.6/site-packages/asyncpg/connection.py in _do_execute(self, query, executor, timeout, retry)
1197 async def _do_execute(self, query, executor, timeout, retry=True):
1198 if timeout is None:
-> 1199 stmt = await self._get_statement(query, None)
1200 else:
1201 before = time.monotonic()
~/.virtualenvs/statbox-abt-backend/lib/python3.6/site-packages/asyncpg/connection.py in _get_statement(self, query, timeout, named)
290 self._types_stmt = await self.prepare(self._intro_query)
291
--> 292 types = await self._types_stmt.fetch(list(ready))
293 self._protocol.get_settings().register_data_types(types)
294
~/.virtualenvs/statbox-abt-backend/lib/python3.6/site-packages/asyncpg/prepared_stmt.py in fetch(self, timeout, *args)
155 :return: A list of :class:`Record` instances.
156 """
--> 157 data = await self.__bind_execute(args, 0, timeout)
158 return data
159
~/.virtualenvs/statbox-abt-backend/lib/python3.6/site-packages/asyncpg/prepared_stmt.py in __bind_execute(self, args, limit, timeout)
194 protocol = self._connection._protocol
195 data, status, _ = await protocol.bind_execute(
--> 196 self._state, args, '', limit, True, timeout)
197 self._last_status = status
198 return data
~/.virtualenvs/statbox-abt-backend/lib/python3.6/site-packages/asyncpg/protocol/protocol.pyx in bind_execute (asyncpg/protocol/protocol.c:66799)()
InvalidSQLStatementNameError: prepared statement "__asyncpg_stmt_1__" does not exist