from bs4 import BeautifulSoup #데이터 패싱을 위한 모듈 설치
import sqlite3 #SQL형태의 DB 모듈 설치를 위해 생성
from sqlite3 import Error #DB의 Erorr 모듈 설치
import time #실시간 데이터를 받아오기 위한 모듈 설치
# SQLite 데이터베이스 생성 또는 연결하는 함수
def create_connection(db_file):
try:
conn = sqlite3.connect(db_file) #기존 데이터베이스 파일과 연결 시도
return conn #연결 성공시 연결한 DB 데이터베이스 안의 값을 반환
except Error as e: #eroor 입력하기 귀찮으니 e 라는 변수변환
print(e) #오류 출력
return None #리턴값 0==오류출력
#채팅 데이터중 참여 맴버 저장하기 위한 DB 생성함수
def create_chat_member_table(conn):
create_table_sql = """
CREATE TABLE IF NOT EXISTS chat_member (
PRIMARY KEY chat_name TEXT,
passward TEXT,
chat_code TEXT,
chat_log TEXT,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);
"""
# 테이블 안에 가격이 포함됐을경우
# 테이블을 구분하는 핵심 키(닉네임)
# 패스워드
# 계정 코드
# 채팅 내용
# 채팅을 입력한 시간(DATETIME)
try:
cursor = conn.cursor() #연결한 DB에 커서 생성
cursor.execute(create_table_sql) #위에서 설정한 스키마 구조대로 DB 테이블 생성
except Error as e:#에러가 있으면
print(e)#에러출력
# 채팅 내용과 동시에 그것을 입력한 대상의 정보를 데이터베이스에 삽입하는 함수
def insert_member_info(conn, chat_name,passward,chat_log):
insert_sql = """
INSERT INTO chat_member(chat_name,passward,chat_log)
VALUES (?, ?, ?);
"""#변수가 실제 저장될 값 개수만큼 공간을 할당해줘야 함
try:
cursor = conn.cursor() #커서 접속
cursor.execute(insert_sql, (chat_name,passward,chat_log)) #sql구조대를 받아와서 거기에 받아온 변수대로 입력
conn.commit() #데이터 처리 끝낸 후 전송
except Error as e:
print(e)
# 채팅 내용을 개별 파일(사용자별)로 저장하는 함수
def save_chat_log(chat_name, chat_log):
filename = f"{chat_name}_log.txt"
with open(filename, 'a') as file:
file.write(chat_log + '\n')
print(f"Chat log saved for {chat_name}.")
if __name__ == "__main__":
# 데이터베이스 파일 경로
database = "chat_data.db"
# 데이터베이스 연결
conn = create_connection(database)
if conn is not None:
# 채팅 맴버 테이블 생성
create_chat_member_table(conn)
# 사용자로부터 채팅 이름과 비밀번호 입력 받기
chat_name = input("Enter your chat name: ")
password = input("Enter your password: ")
# 채팅 내용을 입력받아서 개별 파일로 저장하고 데이터베이스에 삽입
while True:
chat_log = input("Enter your chat log (type 'exit' to end): ")
if chat_log.lower() == 'exit':
break
chat_code = input("Enter chat code: ")
save_chat_log(chat_name, chat_log)
insert_member_info(conn, chat_name, password, chat_code, chat_log)
# 연결 종료
conn.close()
else:
print("Error! cannot create the database connection.")
데이터 베이스/SQL