90 lines
2.7 KiB
Python
90 lines
2.7 KiB
Python
import pymysql
|
|
import pandas as pd
|
|
from datetime import datetime
|
|
|
|
# 数据库连接配置
|
|
db_config = {
|
|
"host": "192.144.230.75",
|
|
"port": 3306,
|
|
"user": "db_vidcon",
|
|
"password": "rexdK4fhCCiRE4BZ",
|
|
"database": "db_vidcon",
|
|
"charset": "utf8mb4",
|
|
}
|
|
|
|
def get_rn_list():
|
|
"""获取所有地区列表"""
|
|
sql = "SELECT DISTINCT rn FROM sh_dm_video_op_v2;"
|
|
conn = pymysql.connect(**db_config)
|
|
df = pd.read_sql(sql, conn)
|
|
conn.close()
|
|
return df['rn'].tolist()
|
|
|
|
def get_data_for_rn(rn: str) -> pd.DataFrame:
|
|
"""针对指定 rn 拉取数据"""
|
|
# 注意:这里把 SQL 中的 rn 和 level 参数化
|
|
sql = f"""
|
|
SELECT
|
|
op.id AS ID,
|
|
v.v_name AS 片名,
|
|
v.link AS 视频连接,
|
|
v.is_piracy AS 是否盗版,
|
|
op.`level` AS 优先级,
|
|
op.rn AS 地区,
|
|
NULL AS 投诉日期,
|
|
NULL AS 下线日期,
|
|
op.keyword AS 关键词,
|
|
v.title AS 标题,
|
|
v.duration AS 时长,
|
|
v.watch_number AS 观看数量,
|
|
v.public_time AS 上传时间,
|
|
v.u_pic AS 头像,
|
|
CASE
|
|
WHEN dup.cnt > 1 THEN 1
|
|
ELSE 2
|
|
END AS 是否重复,
|
|
op.sort AS 排序,
|
|
op.batch AS 批次,
|
|
op.machine AS 机器号,
|
|
v.u_id AS 用户id,
|
|
v.u_xid AS u_xid,
|
|
v.u_name AS 用户名称
|
|
FROM sh_dm_video_op_v2 AS op
|
|
LEFT JOIN (
|
|
SELECT
|
|
t.v_xid,
|
|
COUNT(*) AS cnt
|
|
FROM sh_dm_video_op_v2 AS t
|
|
WHERE t.batch IN (1747324254, 1747323990)
|
|
GROUP BY t.v_xid
|
|
) AS dup
|
|
ON op.v_xid = dup.v_xid
|
|
LEFT JOIN sh_dm_video_v2 AS v
|
|
ON op.v_xid = v.v_xid
|
|
WHERE op.rn = %s
|
|
AND op.batch IN (1747324254, 1747323990)
|
|
ORDER BY op.id;
|
|
"""
|
|
conn = pymysql.connect(**db_config)
|
|
df = pd.read_sql(sql, conn, params=(rn))
|
|
conn.close()
|
|
return df
|
|
|
|
def export_all():
|
|
"""循环所有地区,导出 Excel"""
|
|
rn_list = get_rn_list()
|
|
for rn in rn_list:
|
|
df = get_data_for_rn(rn)
|
|
if df.empty:
|
|
continue
|
|
|
|
timestamp = datetime.now().strftime("%Y%m%d")
|
|
safe_rn = rn.replace(" ", "_") # 如果地区名里有空格或特殊字符
|
|
filename = f"{timestamp}_T0T1_{safe_rn}.xlsx"
|
|
|
|
df.to_excel(filename, index=False)
|
|
print(f"已导出:{filename}")
|
|
|
|
if __name__ == "__main__":
|
|
export_all()
|