Files

39 lines
985 B
Python

import sqlite3
from pathlib import Path
import os
from dotenv import load_dotenv
load_dotenv()
BASE_DIR = Path(__file__).resolve().parent
def configured_path(name: str, default: str) -> Path:
path = Path(os.getenv(name, default)).expanduser()
return path if path.is_absolute() else BASE_DIR / path
DB_FILE = configured_path("DB_FILE", "mini.db")
SQL_FILE = configured_path("SQL_FILE", "tables.sql")
# 初始化数据库
def init_db():
conn = sqlite3.connect(DB_FILE, timeout=30, check_same_thread=False)
conn.execute("PRAGMA journal_mode=WAL")
cur = conn.cursor()
sql = Path(SQL_FILE).read_text("utf-8")
cur.executescript(sql)
conn.commit()
conn.close()
print(f"数据库 {DB_FILE} 创建完成")
# 获取连接
def get_conn():
conn = sqlite3.connect(DB_FILE, timeout=30, check_same_thread=False)
conn.row_factory = sqlite3.Row
conn.execute("PRAGMA foreign_keys=ON")
return conn
if __name__ == "__main__":
init_db()