From 4bc24f3b008b8bad41bb5fb24101a9e69078e983 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Tue, 19 Aug 2025 11:53:59 +0800 Subject: [PATCH] fix db --- app/db/__init__.py | 11 ++++------- app/db/models/downloadhistory.py | 4 ++-- app/db/models/mediaserver.py | 2 +- app/db/models/message.py | 2 +- app/db/models/plugindata.py | 2 +- app/db/models/site.py | 2 +- app/db/models/siteicon.py | 2 +- app/db/models/sitestatistic.py | 2 +- app/db/models/siteuserdata.py | 2 +- app/db/models/subscribe.py | 2 +- app/db/models/subscribehistory.py | 2 +- app/db/models/systemconfig.py | 2 +- app/db/models/transferhistory.py | 2 +- app/db/models/user.py | 2 +- app/db/models/userconfig.py | 2 +- app/db/models/workflow.py | 2 +- 16 files changed, 20 insertions(+), 23 deletions(-) diff --git a/app/db/__init__.py b/app/db/__init__.py index fc303724..2d3db0bc 100644 --- a/app/db/__init__.py +++ b/app/db/__init__.py @@ -2,23 +2,20 @@ import asyncio from typing import Any, Generator, List, Optional, Self, Tuple, AsyncGenerator, Union from sqlalchemy import NullPool, QueuePool, and_, create_engine, inspect, text, select, delete, Column, Integer, \ - Sequence + Sequence, Identity from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker from sqlalchemy.orm import Session, as_declarative, declared_attr, scoped_session, sessionmaker from app.core.config import settings -def get_id_column(table_name: str = None): +def get_id_column(): """ 根据数据库类型返回合适的ID列定义 """ if settings.DB_TYPE.lower() == "postgresql": - # PostgreSQL使用显式序列,确保序列正确创建 - if table_name: - return Column(Integer, Sequence(f'{table_name}_id_seq'), primary_key=True, index=True) - else: - return Column(Integer, Sequence('id_seq'), primary_key=True, index=True) + # PostgreSQL使用SERIAL类型,让数据库自动处理序列 + return Column(Integer, Identity(start=1, cycle=True), primary_key=True, index=True) else: # SQLite使用Sequence return Column(Integer, Sequence('id'), primary_key=True, index=True) diff --git a/app/db/models/downloadhistory.py b/app/db/models/downloadhistory.py index 4ac6a2a0..11d00294 100644 --- a/app/db/models/downloadhistory.py +++ b/app/db/models/downloadhistory.py @@ -12,7 +12,7 @@ class DownloadHistory(Base): """ 下载历史记录 """ - id = get_id_column('downloadhistory') + id = get_id_column() # 保存路径 path = Column(String, nullable=False, index=True) # 类型 电影/电视剧 @@ -188,7 +188,7 @@ class DownloadFiles(Base): """ 下载文件记录 """ - id = get_id_column('downloadfiles') + id = get_id_column() # 下载器 downloader = Column(String) # 下载任务Hash diff --git a/app/db/models/mediaserver.py b/app/db/models/mediaserver.py index 01749af3..c15b5d05 100644 --- a/app/db/models/mediaserver.py +++ b/app/db/models/mediaserver.py @@ -13,7 +13,7 @@ class MediaServerItem(Base): """ 媒体服务器媒体条目表 """ - id = get_id_column('mediaserveritem') + id = get_id_column() # 服务器类型 server = Column(String) # 媒体库ID diff --git a/app/db/models/message.py b/app/db/models/message.py index 0c740890..6fcad3de 100644 --- a/app/db/models/message.py +++ b/app/db/models/message.py @@ -11,7 +11,7 @@ class Message(Base): """ 消息表 """ - id = get_id_column('message') + id = get_id_column() # 消息渠道 channel = Column(String) # 消息来源 diff --git a/app/db/models/plugindata.py b/app/db/models/plugindata.py index d2585b90..3e8e46dd 100644 --- a/app/db/models/plugindata.py +++ b/app/db/models/plugindata.py @@ -8,7 +8,7 @@ class PluginData(Base): """ 插件数据表 """ - id = get_id_column('plugindata') + id = get_id_column() plugin_id = Column(String, nullable=False, index=True) key = Column(String, index=True, nullable=False) value = Column(JSON) diff --git a/app/db/models/site.py b/app/db/models/site.py index ecfefc80..cbfc3bc7 100644 --- a/app/db/models/site.py +++ b/app/db/models/site.py @@ -11,7 +11,7 @@ class Site(Base): """ 站点表 """ - id = get_id_column('site') + id = get_id_column() # 站点名 name = Column(String, nullable=False) # 域名Key diff --git a/app/db/models/siteicon.py b/app/db/models/siteicon.py index fdd13235..05f7593d 100644 --- a/app/db/models/siteicon.py +++ b/app/db/models/siteicon.py @@ -9,7 +9,7 @@ class SiteIcon(Base): """ 站点图标表 """ - id = get_id_column('siteicon') + id = get_id_column() # 站点名称 name = Column(String, nullable=False) # 域名Key diff --git a/app/db/models/sitestatistic.py b/app/db/models/sitestatistic.py index 2f0b9fbf..f2874cff 100644 --- a/app/db/models/sitestatistic.py +++ b/app/db/models/sitestatistic.py @@ -11,7 +11,7 @@ class SiteStatistic(Base): """ 站点统计表 """ - id = get_id_column('sitestatistic') + id = get_id_column() # 域名Key domain = Column(String, index=True) # 成功次数 diff --git a/app/db/models/siteuserdata.py b/app/db/models/siteuserdata.py index 8e137b4c..17b6002c 100644 --- a/app/db/models/siteuserdata.py +++ b/app/db/models/siteuserdata.py @@ -12,7 +12,7 @@ class SiteUserData(Base): """ 站点数据表 """ - id = get_id_column('siteuserdata') + id = get_id_column() # 站点域名 domain = Column(String, index=True) # 站点名称 diff --git a/app/db/models/subscribe.py b/app/db/models/subscribe.py index 7d2c89ea..a3dd2d44 100644 --- a/app/db/models/subscribe.py +++ b/app/db/models/subscribe.py @@ -12,7 +12,7 @@ class Subscribe(Base): """ 订阅表 """ - id = get_id_column('subscribe') + id = get_id_column() # 标题 name = Column(String, nullable=False, index=True) # 年份 diff --git a/app/db/models/subscribehistory.py b/app/db/models/subscribehistory.py index 0d9e587b..37d1ca66 100644 --- a/app/db/models/subscribehistory.py +++ b/app/db/models/subscribehistory.py @@ -11,7 +11,7 @@ class SubscribeHistory(Base): """ 订阅历史表 """ - id = get_id_column('subscribehistory') + id = get_id_column() # 标题 name = Column(String, nullable=False, index=True) # 年份 diff --git a/app/db/models/systemconfig.py b/app/db/models/systemconfig.py index 1768d946..c7b3dac2 100644 --- a/app/db/models/systemconfig.py +++ b/app/db/models/systemconfig.py @@ -9,7 +9,7 @@ class SystemConfig(Base): """ 配置表 """ - id = get_id_column('systemconfig') + id = get_id_column() # 主键 key = Column(String, index=True) # 值 diff --git a/app/db/models/transferhistory.py b/app/db/models/transferhistory.py index e1be25ea..a72695fb 100644 --- a/app/db/models/transferhistory.py +++ b/app/db/models/transferhistory.py @@ -12,7 +12,7 @@ class TransferHistory(Base): """ 整理记录 """ - id = get_id_column('transferhistory') + id = get_id_column() # 源路径 src = Column(String, index=True) # 源存储 diff --git a/app/db/models/user.py b/app/db/models/user.py index 1a5dde73..91f37f9c 100644 --- a/app/db/models/user.py +++ b/app/db/models/user.py @@ -10,7 +10,7 @@ class User(Base): 用户表 """ # ID - id = get_id_column('user') + id = get_id_column() # 用户名,唯一值 name = Column(String, index=True, nullable=False) # 邮箱 diff --git a/app/db/models/userconfig.py b/app/db/models/userconfig.py index c2373c4e..b8b6eedf 100644 --- a/app/db/models/userconfig.py +++ b/app/db/models/userconfig.py @@ -8,7 +8,7 @@ class UserConfig(Base): """ 用户配置表 """ - id = get_id_column('userconfig') + id = get_id_column() # 用户名 username = Column(String, index=True) # 配置键 diff --git a/app/db/models/workflow.py b/app/db/models/workflow.py index baa22a6f..69bf4f5f 100644 --- a/app/db/models/workflow.py +++ b/app/db/models/workflow.py @@ -12,7 +12,7 @@ class Workflow(Base): 工作流表 """ # ID - id = get_id_column('workflow') + id = get_id_column() # 名称 name = Column(String, index=True, nullable=False) # 描述