MagicStack / MagicStack/asyncpg
"Cannot insert multiple commands into prepared statement" issue while executing query with params
- Dominant language
- Python
- Stars
- 8.1k
- Forks
- 468
- PR merge metrics
- No merged PRs in 30d
Description
(python 3.5.1, asyncpg 0.5.4)
Consider the next code
```
import asyncpg
import asyncio
async def run():
con = await asyncpg.connect(user="coldmind", database="test")
await con.execute('SELECT ($1); SELECT 2;', 1)
asyncio.get_event_loop().run_until_complete(run())
```
The executing fails with `asyncpg.exceptions.PostgresSyntaxError: cannot insert multiple commands into a prepared statement` error, while the another example (without passing params to the query) works well with multiple commands:
```
import asyncpg
import asyncio
async def run():
con = await asyncpg.connect(user="coldmind", database="test")
await con.execute('SELECT 1; SELECT 2;')
asyncio.get_event_loop().run_until_complete(run())
```
Why is the first example using a prepared statement instead of executing it?
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the con.execute entry point and run the two Python examples from the issue to compare parameterized and non-parameterized queries. Trace how parameters affect execution, then establish the expected behavior for multiple commands and document or test the resulting decision.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- postgresql, python
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100