feature/db #2

Merged
tliu93 merged 16 commits from feature/db into main 2025-09-18 14:28:18 +02:00
3 changed files with 8 additions and 8 deletions
Showing only changes of commit 64a2726c73 - Show all commits

View File

@@ -5,12 +5,13 @@ from typing import TYPE_CHECKING
from sqlalchemy import event from sqlalchemy import event
from sqlalchemy.pool import StaticPool from sqlalchemy.pool import StaticPool
from sqlmodel import Session, SQLModel, create_engine from sqlmodel import Session, create_engine
import trading_journal.db_migration
if TYPE_CHECKING: if TYPE_CHECKING:
from collections.abc import Generator from collections.abc import Generator
from sqlite3 import Connection as DBAPIConnection
from sqlalchemy.engine import Connection
class Database: class Database:
@@ -29,11 +30,9 @@ class Database:
if self._database_url.startswith("sqlite"): if self._database_url.startswith("sqlite"):
def _enable_sqlite_pragmas(dbapi_conn: Connection, _connection_record: object) -> None: def _enable_sqlite_pragmas(dbapi_conn: DBAPIConnection, _connection_record: object) -> None:
try: try:
cur = dbapi_conn.cursor() cur = dbapi_conn.cursor()
cur.execute("PRAGMA journal_mode=WAL;")
cur.execute("PRAGMA synchronous=NORMAL;")
cur.execute("PRAGMA foreign_keys=ON;") cur.execute("PRAGMA foreign_keys=ON;")
cur.execute("PRAGMA busy_timeout=30000;") cur.execute("PRAGMA busy_timeout=30000;")
cur.close() cur.close()

View File

@@ -3,7 +3,7 @@ from __future__ import annotations
from typing import Callable from typing import Callable
from sqlalchemy import text from sqlalchemy import text
from sqlalchemy.engine import Engine from sqlalchemy.engine import Connection, Engine
from sqlmodel import SQLModel from sqlmodel import SQLModel
# 最新 schema 版本号 # 最新 schema 版本号
@@ -26,7 +26,7 @@ MIGRATIONS: dict[int, Callable[[Engine], None]] = {
} }
def _get_sqlite_user_version(conn) -> int: def _get_sqlite_user_version(conn: Connection) -> int:
row = conn.execute(text("PRAGMA user_version")).fetchone() row = conn.execute(text("PRAGMA user_version")).fetchone()
return int(row[0]) if row and row[0] is not None else 0 return int(row[0]) if row and row[0] is not None else 0

View File

@@ -2,6 +2,7 @@ from __future__ import annotations
from datetime import date, datetime # noqa: TC003 from datetime import date, datetime # noqa: TC003
from enum import Enum from enum import Enum
from typing import TYPE_CHECKING
from sqlmodel import Column, DateTime, Field, Relationship, SQLModel from sqlmodel import Column, DateTime, Field, Relationship, SQLModel
from sqlmodel import Enum as SQLEnum from sqlmodel import Enum as SQLEnum