wip
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user