saas1.6
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
from datetime import date, timedelta, datetime
|
||||
import holidays
|
||||
from config import Config
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
|
||||
class GetProvateMiniProgram(Config):
|
||||
def get_private_mini_program_details(self, days_back=1):
|
||||
"""
|
||||
从固定的数据库中获取前几天的NGV明细。
|
||||
参数 `days_back` 表示相对于今天的天数偏移量,默认为1(即前一天)。
|
||||
返回包含NGV明细的pandas DataFrame。
|
||||
"""
|
||||
try:
|
||||
# 获得连接
|
||||
conn = psycopg2.connect(**self.conn)
|
||||
cursor = conn.cursor()
|
||||
|
||||
# 获取指定天数前的日期
|
||||
now_time = datetime.now()
|
||||
target_time = now_time + timedelta(days=-days_back)
|
||||
target_date_id = int(target_time.strftime('%Y%m%d')) # 获取目标日期
|
||||
|
||||
# sql语句查询
|
||||
sql = f"""
|
||||
SELECT * FROM "public"."holo_ads_report_saas_profile_ngv_detail_d" WHERE "date_id" = '{target_date_id}' ;
|
||||
"""
|
||||
|
||||
# 执行语句并获取结果集
|
||||
cursor.execute(sql)
|
||||
rows = cursor.fetchall()
|
||||
all_fields = cursor.description
|
||||
|
||||
# 执行结果转化为dataframe
|
||||
col = [i[0] for i in all_fields]
|
||||
data_NGV = pd.DataFrame(rows, columns=col)
|
||||
|
||||
# 尝试自动解析日期时间字符串
|
||||
time_format = "%Y-%m-%d %H:%M:%S"
|
||||
if 'saas_create_time' in data_NGV.columns:
|
||||
data_NGV['saas_create_time'] = pd.to_datetime(data_NGV['saas_create_time'], format=time_format,
|
||||
errors='coerce')
|
||||
data_NGV['saas_create_time'] = data_NGV['saas_create_time'].dt.strftime('%Y-%m-%d')
|
||||
|
||||
# 关闭游标和连接
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
return data_NGV
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error occurred: {e}")
|
||||
return None
|
||||
Reference in New Issue
Block a user