Comments (3)
I made a mistake in what I wrote above. I'm not using two pools, the difference is I'm calling acquire in two different places. The sanic request/response middleware already calls acquire before and after my endpoint implementation runs, then during my endpoint core I call acquire once more. I feel like that's something that should be fine.
from aiomysql.
In the additional context, I posted a screenshot. Here the code immediately breaks in the first loop of the while True. So this gives me zero rows, when there obviously should be rows. This flips each time I call my endpoint, so one time there are rows, next time they are not there. This starts happening when I run the update statement after having done the select statement. It keeps happening when I update again and set the value back to what it was initially.
from aiomysql.
This morning I woke up an realized this has got to do with transaction isolation levels...
When I commit after my select query, this problem disappears.
Or when I create my pool with autocommit=True, it of course also solves this.
But I'm still not sure if this is expected behaviour. If I do pool.acquire() I expect to get a connection based on the current truth of whatever is committed to the database when acquiring. Pools are re-using connections, so is there a state bug in here? of it my responsability to reset or commit? Also really don't get why the explicit acquire in my update statement shows this problem and not the conn I already acquired in the request middleware. The only thing I can think of.. is that acquire always gives the next available or new connection, which is always a different that the last connection it handed out, and two realities start existing. One where I run the update query and commit, and other connections, that are never committed and thus show the old state of the database.
@Nothing4You any idea?
from aiomysql.
Related Issues (20)
- Support SQLAlchemy 1.4
- UNION in SQL causes TypeError: Argument 'val' has incorrect type (expected tuple, got list), in converters.pyx line 23, in asyncmy.converters.escape_item HOT 2
- Automatically handle parallel queries with an async `Lock` HOT 4
- `set-output` in GHA workflow is deprecated
- Better documentation on how connection/cursor work
- The program is blocked for unknown reasons, causing other protocols to fail to run HOT 1
- Connection created from pool is never closed to success after `with` block HOT 2
- Is there any way to release inactive connection?
- Please, type hint this library. HOT 1
- Pre ping failing with uvloop HOT 1
- No fast-track for bulk inserts in Cursor.executemany with INSERT/REPLACE syntax introduced in MySQL 8.0.19
- INSERT into json column on MySQL 8 fails
- Get InternalError: Packet sequence number wrong - got 1 expected 2 HOT 1
- Similarly, the query results of the sql statements aiomysql and navicat are inconsistent(同样sql语句aiomysql和navicat查询结果不一致) HOT 1
- aiomysql does not work with ssl, but pymysql does work HOT 1
- aiomysql raise InvalidRequestError: Cannot release a connection with not finished transaction
- aiomysql executemany is very slow to insert
- 返回的连接对象的游标对象执行sql语句的时候发生了bug
- How to initialize a database connection only once when deploying services using FastAPI
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aiomysql.