s5启动文件配置
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
import pymysql
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
def add_days_to_table_fields(
|
||||
conn_params: dict,
|
||||
table_name: str,
|
||||
days: int
|
||||
):
|
||||
"""
|
||||
为指定表的 end_time 和 end_time_unix 字段分别增加指定天数。
|
||||
两个字段独立处理,end_time 为空时不改,end_time_unix 为空时也不改。
|
||||
"""
|
||||
# 连接数据库
|
||||
conn = pymysql.connect(**conn_params)
|
||||
cursor = conn.cursor(pymysql.cursors.DictCursor)
|
||||
|
||||
# 查询整表需要的字段
|
||||
cursor.execute(f"SELECT id, end_time, end_time_unix FROM {table_name}")
|
||||
rows = cursor.fetchall()
|
||||
|
||||
count_end_time = 0
|
||||
count_end_time_unix = 0
|
||||
|
||||
for row in rows:
|
||||
record_id = row["id"]
|
||||
end_time_str = row.get("end_time")
|
||||
end_time_unix_str = row.get("end_time_unix")
|
||||
|
||||
new_end_time = None
|
||||
new_end_time_unix = None
|
||||
|
||||
# 1️⃣ 处理 end_time
|
||||
if end_time_str:
|
||||
try:
|
||||
dt = datetime.strptime(end_time_str, "%Y-%m-%d %H:%M:%S")
|
||||
new_dt = dt + timedelta(days=days)
|
||||
new_end_time = new_dt.strftime("%Y-%m-%d %H:%M:%S")
|
||||
count_end_time += 1
|
||||
except Exception as e:
|
||||
print(f"[WARN] id={record_id} 的 end_time 无法解析: {end_time_str} ({e})")
|
||||
|
||||
# 2️⃣ 处理 end_time_unix
|
||||
if end_time_unix_str and end_time_unix_str.isdigit():
|
||||
try:
|
||||
ts = int(end_time_unix_str)
|
||||
new_ts = ts + days * 86400 # 1天=86400秒
|
||||
new_end_time_unix = str(new_ts)
|
||||
count_end_time_unix += 1
|
||||
except Exception as e:
|
||||
print(f"[WARN] id={record_id} 的 end_time_unix 无法解析: {end_time_unix_str} ({e})")
|
||||
|
||||
# 3️⃣ 如果有任意一个字段需要更新,则执行更新
|
||||
if new_end_time or new_end_time_unix:
|
||||
set_clauses = []
|
||||
params = []
|
||||
if new_end_time:
|
||||
set_clauses.append("end_time=%s")
|
||||
params.append(new_end_time)
|
||||
if new_end_time_unix:
|
||||
set_clauses.append("end_time_unix=%s")
|
||||
params.append(new_end_time_unix)
|
||||
params.append(record_id)
|
||||
|
||||
sql_update = f"UPDATE {table_name} SET {', '.join(set_clauses)} WHERE id=%s"
|
||||
print(f'执行sql ===> {sql_update} 参数 ==> {params}')
|
||||
cursor.execute(sql_update, params)
|
||||
|
||||
conn.commit()
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
print(f"✅ 更新完成:end_time {count_end_time} 条,end_time_unix {count_end_time_unix} 条。")
|
||||
|
||||
# 直接操作数据库,给全体用户增加有效天数
|
||||
if __name__ == "__main__":
|
||||
db_info = {
|
||||
'host': '101.227.74.8',
|
||||
'port': 3306,
|
||||
'user': 'root',
|
||||
'password': '9lYgSVPPDjh6sq2C',
|
||||
"database": "ss2_migrated",
|
||||
}
|
||||
|
||||
add_days_to_table_fields(db_info, "group_purchase_users", days=7)
|
||||
Reference in New Issue
Block a user