fix: 优化视频数据插入逻辑,使用 ON DUPLICATE KEY 更新现有记录以提高性能
This commit is contained in:
parent
16c71d5b5b
commit
62184e8ad8
66
DB.py
66
DB.py
@ -229,21 +229,6 @@ class DBVidcon:
|
||||
|
||||
while True:
|
||||
try:
|
||||
# 1) 先读 is_repeat
|
||||
select_repeat = """
|
||||
SELECT is_repeat,watch_number,follow_number,video_number
|
||||
FROM sh_dm_video_v2
|
||||
WHERE rn = %(rn)s
|
||||
AND v_xid = %(v_xid)s
|
||||
LIMIT 1
|
||||
"""
|
||||
self.cursor.execute(select_repeat, data)
|
||||
row = self.cursor.fetchone()
|
||||
if row:
|
||||
data['is_repeat'] = row.get('is_repeat', 3)
|
||||
data['fans'] = row.get('follow_number', 0)
|
||||
data['videos'] = row.get('video_number', 0)
|
||||
# 2) 插入到 op 表
|
||||
sql_op = """
|
||||
INSERT INTO sh_dm_video_op_v2 (
|
||||
v_id, v_xid, a_id, level, name_title,
|
||||
@ -256,36 +241,29 @@ class DBVidcon:
|
||||
)
|
||||
"""
|
||||
self.cursor.execute(sql_op, data)
|
||||
sql_update = """
|
||||
INSERT INTO sh_dm_video_v2 (
|
||||
v_id, v_xid, rn, v_name, title, link,
|
||||
edition, duration,
|
||||
public_time, cover_pic, sort,
|
||||
u_xid, u_id, u_pic, u_name,
|
||||
status, createtime, updatetime
|
||||
) VALUES (
|
||||
%(v_id)s, %(v_xid)s, %(rn)s, %(v_name)s, %(title)s, %(link)s,
|
||||
'', %(duration)s,
|
||||
%(create_time)s, %(cover_pic)s, %(sort)s,
|
||||
%(u_xid)s, %(u_id)s, %(u_pic)s, %(u_name)s,
|
||||
1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
title = VALUES(title),
|
||||
duration = VALUES(duration),
|
||||
cover_pic = VALUES(cover_pic),
|
||||
sort = VALUES(sort),
|
||||
updatetime = UNIX_TIMESTAMP();
|
||||
"""
|
||||
|
||||
# 3) 删除旧表行
|
||||
sql_del = """
|
||||
DELETE FROM sh_dm_video_v2
|
||||
WHERE rn = %(rn)s
|
||||
AND v_xid = %(v_xid)s
|
||||
"""
|
||||
self.cursor.execute(sql_del, data)
|
||||
|
||||
# 4) 插入新表
|
||||
sql_ins = """
|
||||
INSERT INTO sh_dm_video_v2 (
|
||||
v_id, v_xid, rn, v_name, title, link,
|
||||
is_piracy, edition, duration,
|
||||
watch_number, follow_number, video_number,
|
||||
public_time, cover_pic, sort,
|
||||
u_xid, u_id, u_pic, u_name,
|
||||
status, createtime, updatetime,
|
||||
is_repeat
|
||||
) VALUES (
|
||||
%(v_id)s, %(v_xid)s, %(rn)s, %(v_name)s, %(title)s, %(link)s,
|
||||
%(is_piracy)s, '', %(duration)s,
|
||||
%(watch_number)s, %(fans)s, %(videos)s,
|
||||
%(create_time)s, %(cover_pic)s, %(sort)s,
|
||||
%(u_xid)s, %(u_id)s, %(u_pic)s, %(u_name)s,
|
||||
1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(),
|
||||
%(is_repeat)s
|
||||
)
|
||||
"""
|
||||
self.cursor.execute(sql_ins, data)
|
||||
self.cursor.execute(sql_update, data)
|
||||
break # 成功跳出重试循环
|
||||
|
||||
except Exception as e:
|
||||
|
Loading…
x
Reference in New Issue
Block a user