Skip to content

Commit

Permalink
add daily query. TODO clean up 2 files
Browse files Browse the repository at this point in the history
  • Loading branch information
liante0904 committed Sep 20, 2024
1 parent 9251a45 commit 0c2488e
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 3 deletions.
47 changes: 46 additions & 1 deletion json_to_sqlite.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import argparse
from datetime import datetime

from package.json_util import format_message_sql
# 데이터베이스 파일 경로
db_path = os.path.expanduser('~/sqlite3/telegram.db')

Expand All @@ -26,7 +27,7 @@

# 명령행 인자 파서 설정
parser = argparse.ArgumentParser(description="SQLite Database Management Script")
parser.add_argument('action', nargs='?', choices=['table', 'insert', 'select','fetch', 'keyword_select'], help="Action to perform")
parser.add_argument('action', nargs='?', choices=['table', 'insert', 'select', 'fetch', 'keyword_select', 'daily'], help="Action to perform")
parser.add_argument('name', nargs='?', help="Table name for the action")
args = parser.parse_args()

Expand Down Expand Up @@ -289,6 +290,48 @@ def keyword_select(keyword):
print(formatted_message)
return formatted_message


def daily_select_data(date_str=None):
"""data_main_daily_send 테이블에서 지정된 날짜 또는 당일 데이터를 조회합니다。"""
if date_str is None:
# date_str가 없으면 현재 날짜 사용
query_date = datetime.now().strftime('%Y-%m-%d')
else:
# yyyymmdd 형식의 날짜를 yyyy-mm-dd로 변환
query_date = f"{date_str[:4]}-{date_str[4:6]}-{date_str[6:]}"

# SQL 쿼리 실행
# SQL 쿼리 문자열을 읽기 쉽도록 포맷팅
query = f"""
SELECT
FIRM_NM,
ARTICLE_TITLE,
ATTACH_URL AS ARTICLE_URL,
SAVE_TIME,
SEND_USER
FROM
data_main_daily_send
WHERE
DATE(SAVE_TIME) = '{query_date}'
ORDER BY SEC_FIRM_ORDER, ARTICLE_BOARD_ORDER, SAVE_TIME
"""
cursor.execute(query)
rows = cursor.fetchall()

# 컬럼 이름 추출
columns = [desc[0] for desc in cursor.description]

# row 데이터를 dict로 변환
results = [dict(zip(columns, row)) for row in rows]

# 결과 출력 및 반환
# print("Queried Data:", results)
r = format_message_sql(rows)
print('='*30)
print(r)
return results


# 명령 실행
if args.action == 'table' or args.action is None:
print_tables()
Expand All @@ -305,5 +348,7 @@ def keyword_select(keyword):
else:
print("Error: 'keyword_select' action requires a keyword argument.")

elif args.action == 'daily':
daily_select_data(args.name)
# 연결 종료
conn.close()
54 changes: 52 additions & 2 deletions package/json_to_sqlite.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,13 @@
import os
import argparse
from datetime import datetime
import asyncio
import sys
import os
# 현재 스크립트의 상위 디렉터리를 모듈 경로에 추가
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

from package.json_util import format_message_sql
# 데이터베이스 파일 경로
db_path = os.path.expanduser('~/sqlite3/telegram.db')

Expand All @@ -26,10 +32,9 @@

# 명령행 인자 파서 설정
parser = argparse.ArgumentParser(description="SQLite Database Management Script")
parser.add_argument('action', nargs='?', choices=['table', 'insert', 'select','fetch', 'keyword_select'], help="Action to perform")
parser.add_argument('action', nargs='?', choices=['table', 'insert', 'select', 'fetch', 'keyword_select', 'daily'], help="Action to perform")
parser.add_argument('name', nargs='?', help="Table name for the action")
args = parser.parse_args()


def fetch_data(date=None, keyword=None, user_id=None):
"""특정 테이블에서 데이터를 조회하고, 파라미터가 포함된 실제 쿼리를 출력합니다.
Expand Down Expand Up @@ -93,6 +98,7 @@ def fetch_data(date=None, keyword=None, user_id=None):
return results



def update_data(date=None, keyword=None, user_ids=None):
"""특정 키워드와 날짜를 기준으로 여러 테이블의 데이터를 업데이트하며, 파라미터가 포함된 실제 쿼리를 출력합니다.
Expand Down Expand Up @@ -289,6 +295,48 @@ def keyword_select(keyword):
print(formatted_message)
return formatted_message


def daily_select_data(date_str=None):
"""data_main_daily_send 테이블에서 지정된 날짜 또는 당일 데이터를 조회합니다。"""
if date_str is None:
# date_str가 없으면 현재 날짜 사용
query_date = datetime.now().strftime('%Y-%m-%d')
else:
# yyyymmdd 형식의 날짜를 yyyy-mm-dd로 변환
query_date = f"{date_str[:4]}-{date_str[4:6]}-{date_str[6:]}"

# SQL 쿼리 실행
# SQL 쿼리 문자열을 읽기 쉽도록 포맷팅
query = f"""
SELECT
FIRM_NM,
ARTICLE_TITLE,
ATTACH_URL AS ARTICLE_URL,
SAVE_TIME,
SEND_USER
FROM
data_main_daily_send
WHERE
DATE(SAVE_TIME) = '{query_date}'
ORDER BY SEC_FIRM_ORDER, ARTICLE_BOARD_ORDER, SAVE_TIME
"""
cursor.execute(query)
rows = cursor.fetchall()

# 컬럼 이름 추출
columns = [desc[0] for desc in cursor.description]

# row 데이터를 dict로 변환
results = [dict(zip(columns, row)) for row in rows]

# 결과 출력 및 반환
# print("Queried Data:", results)
r = format_message_sql(rows)
print('='*30)
print(r)
return results


# 명령 실행
if args.action == 'table' or args.action is None:
print_tables()
Expand All @@ -305,5 +353,7 @@ def keyword_select(keyword):
else:
print("Error: 'keyword_select' action requires a keyword argument.")

elif args.action == 'daily':
daily_select_data(args.name)
# 연결 종료
conn.close()

0 comments on commit 0c2488e

Please sign in to comment.