Skip to content

Commit 103137c

Browse files
committed
Tweak pooling on the database.
1 parent b3fab8d commit 103137c

File tree

12 files changed

+31
-2
lines changed

12 files changed

+31
-2
lines changed

npps4/db/achievement.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import sqlalchemy
22
import sqlalchemy.ext.asyncio
33
import sqlalchemy.orm
4+
import sqlalchemy.pool
45

56
from . import common
67
from ..download import download
@@ -183,6 +184,7 @@ class UnitTypeGroup(common.GameDBBase):
183184

184185
engine = sqlalchemy.ext.asyncio.create_async_engine(
185186
f"sqlite+aiosqlite:///file:{download.get_db_path('achievement')}?mode=ro&uri=true",
187+
poolclass=sqlalchemy.pool.NullPool,
186188
connect_args={"check_same_thread": False},
187189
)
188190
sessionmaker = sqlalchemy.ext.asyncio.async_sessionmaker(engine)

npps4/db/effort.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import sqlalchemy
22
import sqlalchemy.ext.asyncio
33
import sqlalchemy.orm
4+
import sqlalchemy.pool
45

56
from . import common
67
from ..download import download
@@ -51,6 +52,7 @@ class LiveEffortPointBoxSpec(common.GameDBBase, common.MaybeEncrypted):
5152

5253
engine = sqlalchemy.ext.asyncio.create_async_engine(
5354
f"sqlite+aiosqlite:///file:{download.get_db_path('effort')}?mode=ro&uri=true",
55+
poolclass=sqlalchemy.pool.NullPool,
5456
connect_args={"check_same_thread": False},
5557
)
5658
sessionmaker = sqlalchemy.ext.asyncio.async_sessionmaker(engine)

npps4/db/exchange.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import sqlalchemy
22
import sqlalchemy.ext.asyncio
33
import sqlalchemy.orm
4+
import sqlalchemy.pool
45

56
from . import common
67
from ..download import download
@@ -75,6 +76,7 @@ class ExchangePoint(common.GameDBBase, common.MaybeEncrypted):
7576

7677
engine = sqlalchemy.ext.asyncio.create_async_engine(
7778
f"sqlite+aiosqlite:///file:{download.get_db_path('exchange')}?mode=ro&uri=true",
79+
poolclass=sqlalchemy.pool.NullPool,
7880
connect_args={"check_same_thread": False},
7981
)
8082
sessionmaker = sqlalchemy.ext.asyncio.async_sessionmaker(engine)

npps4/db/game_mater.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import sqlalchemy
22
import sqlalchemy.ext.asyncio
33
import sqlalchemy.orm
4+
import sqlalchemy.pool
45

56
from . import common
67
from ..download import download
@@ -210,6 +211,7 @@ def load_client_setting():
210211

211212
engine = sqlalchemy.ext.asyncio.create_async_engine(
212213
f"sqlite+aiosqlite:///file:{game_mater}?mode=ro&uri=true",
214+
poolclass=sqlalchemy.pool.NullPool,
213215
connect_args={"check_same_thread": False},
214216
)
215217
sessionmaker = sqlalchemy.ext.asyncio.async_sessionmaker(engine)

npps4/db/item.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import sqlalchemy
22
import sqlalchemy.ext.asyncio
33
import sqlalchemy.orm
4+
import sqlalchemy.pool
45

56
from . import common
67
from ..download import download
@@ -412,6 +413,7 @@ class Memories(common.GameDBBase, common.MaybeEncrypted):
412413

413414
engine = sqlalchemy.ext.asyncio.create_async_engine(
414415
f"sqlite+aiosqlite:///file:{download.get_db_path('item')}?mode=ro&uri=true",
416+
poolclass=sqlalchemy.pool.NullPool,
415417
connect_args={"check_same_thread": False},
416418
)
417419
sessionmaker = sqlalchemy.ext.asyncio.async_sessionmaker(engine)

npps4/db/live.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import sqlalchemy
22
import sqlalchemy.ext.asyncio
33
import sqlalchemy.orm
4+
import sqlalchemy.pool
45

56
from . import common
67
from ..download import download
@@ -359,6 +360,7 @@ class SpecialLiveRotation(common.GameDBBase):
359360

360361
engine = sqlalchemy.ext.asyncio.create_async_engine(
361362
f"sqlite+aiosqlite:///file:{download.get_db_path('live')}?mode=ro&uri=true",
363+
poolclass=sqlalchemy.pool.NullPool,
362364
connect_args={"check_same_thread": False},
363365
)
364366
sessionmaker = sqlalchemy.ext.asyncio.async_sessionmaker(engine)

npps4/db/main.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import hmac
44

55
import sqlalchemy
6+
import sqlalchemy.engine.url
67
import sqlalchemy.ext.asyncio
78
import sqlalchemy.orm
89

@@ -467,7 +468,14 @@ class MigrationFixes(common.Base, kw_only=True):
467468
revision: sqlalchemy.orm.Mapped[str] = sqlalchemy.orm.mapped_column(primary_key=True)
468469

469470

470-
engine = sqlalchemy.ext.asyncio.create_async_engine(config.get_database_url(), connect_args={"autocommit": False})
471+
# Have 0 connection pool with default max_overflow on SQLite3 only
472+
if sqlalchemy.engine.url.make_url(config.get_database_url()).get_backend_name() == "sqlite":
473+
_poolsize = 0
474+
else:
475+
_poolsize = 5
476+
engine = sqlalchemy.ext.asyncio.create_async_engine(
477+
config.get_database_url(), pool_size=_poolsize, connect_args={"autocommit": False}
478+
)
471479
sessionmaker = sqlalchemy.ext.asyncio.async_sessionmaker(engine)
472480

473481

npps4/db/museum.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import sqlalchemy
22
import sqlalchemy.ext.asyncio
33
import sqlalchemy.orm
4+
import sqlalchemy.pool
45

56
from . import common
67
from ..download import download
@@ -49,6 +50,7 @@ class MuseumContents(common.GameDBBase, common.MaybeEncrypted):
4950

5051
engine = sqlalchemy.ext.asyncio.create_async_engine(
5152
f"sqlite+aiosqlite:///file:{download.get_db_path('museum')}?mode=ro&uri=true",
53+
poolclass=sqlalchemy.pool.NullPool,
5254
connect_args={"check_same_thread": False},
5355
)
5456
sessionmaker = sqlalchemy.ext.asyncio.async_sessionmaker(engine)

npps4/db/scenario.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import sqlalchemy
22
import sqlalchemy.ext.asyncio
33
import sqlalchemy.orm
4+
import sqlalchemy.pool
45

56
from . import common
67
from ..download import download
@@ -70,6 +71,8 @@ class Chapter(common.GameDBBase, common.MaybeEncrypted):
7071

7172
engine = sqlalchemy.ext.asyncio.create_async_engine(
7273
f"sqlite+aiosqlite:///file:{download.get_db_path('scenario')}?mode=ro&uri=true",
74+
poolclass=sqlalchemy.pool.NullPool,
75+
connect_args={"check_same_thread": False},
7376
)
7477
sessionmaker = sqlalchemy.ext.asyncio.async_sessionmaker(engine)
7578

npps4/db/subscenario.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import sqlalchemy
22
import sqlalchemy.ext.asyncio
33
import sqlalchemy.orm
4+
import sqlalchemy.pool
45

56
from . import common
67
from ..download import download
@@ -31,6 +32,7 @@ class SubScenario(common.GameDBBase, common.MaybeEncrypted):
3132

3233
engine = sqlalchemy.ext.asyncio.create_async_engine(
3334
f"sqlite+aiosqlite:///file:{download.get_db_path('subscenario')}?mode=ro&uri=true",
35+
poolclass=sqlalchemy.pool.NullPool,
3436
connect_args={"check_same_thread": False},
3537
)
3638
sessionmaker = sqlalchemy.ext.asyncio.async_sessionmaker(engine)

0 commit comments

Comments
 (0)