This commit is contained in:
oscarz
2025-03-20 10:55:26 +08:00
parent 22ee675b4c
commit f8af2c44e5

View File

@ -38,9 +38,25 @@ def alter_chapters_table():
table_name = f'{tbl_name_chapters_prefix}_{i}'
add_columns_to_table(table_name)
# 检查是否存在,已存在的先删除
def check_view_exist(view_name):
cursor.execute("SELECT name FROM sqlite_master WHERE type='view' AND name=?", (view_name,))
if cursor.fetchone():
try:
# 删除已存在的视图
drop_view_sql = f"DROP VIEW {view_name};"
cursor.execute(drop_view_sql)
conn.commit()
except sqlite3.Error as e:
print(f"删除视图 {view_name} 时出错: {e}")
def create_finished_view():
# 生成视图创建 SQL 代码
view_sql = "CREATE VIEW view_completed_book_ids AS\n"
view_name = 'view_completed_book_ids'
check_view_exist(view_name=view_name)
view_sql = f"CREATE VIEW {view_name} AS\n"
first_query = True
for i in range(100):
table_name = f'{tbl_name_chapters_prefix}_{i}'
@ -56,10 +72,60 @@ def create_finished_view():
try:
cursor.execute(view_sql)
conn.commit()
print("视图创建成功")
print(f"视图 {view_name} 创建成功")
except sqlite3.Error as e:
print(f"视图创建失败: {e}")
print(f"创建视图 {view_name} 时出错: {e}")
def create_finished_books_info_view():
# 视图名称
view_name = 'view_completed_books_info'
check_view_exist(view_name=view_name)
# 视图创建 SQL 语句
view_sql = f"""
CREATE VIEW {view_name} AS
SELECT
b.id,
b.rank,
b.category,
b.name,
b.href,
b.num,
b.author,
b.tickets,
b.update_time,
b.status,
b.total_words,
b.total_clicks,
b.month_clicks,
b.week_clicks,
b.total_recommend,
b.month_recommend,
b.week_recommend,
b.created_time,
b.start_page_href,
b.start_page_num,
b.table_of_contents_href,
b.is_latest,
b.created_at,
b.updated_at
FROM
{tbl_name_books} b
JOIN
view_completed_book_ids c ON b.id = c.book_id;
"""
try:
# 执行视图创建 SQL 语句
cursor.execute(view_sql)
conn.commit()
print(f"视图 {view_name} 创建成功。")
except sqlite3.Error as e:
print(f"创建视图 {view_name} 时出错: {e}")
def create_views():
create_finished_view()
create_finished_books_info_view()
# 使用示例
if __name__ == "__main__":
create_finished_view()
create_views()