[개발이야기#029] 내가 해보고 싶은 것 - 자동 보팅 프로그램 사용자 및 포스트 테이블 생성하기 [postingcuration]
안녕하세요 가야태자 @talkit 입니다.
이전글
[개발이야기#028] 내가 해보고 싶은 것 - 자동 보팅 프로그램 SQLite vs DuckDB [postingcuration] https://steemit.com/kr/@talkit/028-sqlite-vs-duckdb-postingcuration
어제 글에 이어서 자동 보팅 프로그램 작성을 계속 해보겠습니다.
필요한 테이블
우선 더 많은 테이블이 필요할지 모르겠으나, 제가 필요로 하는 테이블은 사용자와, 포스트 입니다.
사용자 테이블 구조
Column Name | Domain Name | Data Type | Constraints | Description |
---|---|---|---|---|
user_id | 사용자아이디 | TEXT | UNIQUE | 사용자를 위한 고유 식별자 |
nickname | 닉네임 | TEXT | NULL allowed | 사용자의 닉네임 (널 허용) |
is_active | 사용유무 | CHAR(1) | DEFAULT 'Y' | 사용자 활성 상태 ('Y' 또는 'N') |
registered_at | 등록일시 | TIMESTAMP | 사용자가 등록된 날짜와 시간 | |
modified_at | 수정일시 | TIMESTAMP | 사용자가 마지막으로 수정된 날짜와 시간 |
사용자 테이블은 위와 같이 작성했습니다.
로그인을 할게 아니고, 제가 수집할 사용자를 저장해 놓을 공간 입니다. ^^
포스트 테이블의 구조
Column Name | Domain Name | Data Type | Constraints | Description |
---|---|---|---|---|
post_id | 게시물아이디 | TEXT | UNIQUE | 스팀잇 게시물의 고유 식별자 |
user_id | 작성자아이디 | TEXT | REFERENCES users(user_id) | 게시물 작성자의 사용자아이디 |
title | 제목 | TEXT | 게시물의 제목 | |
body | 내용 | TEXT | 게시물의 내용 | |
tags | 태그 | TEXT | 게시물에 포함된 태그 | |
main_tag | 메인태그 | TEXT | 게시물의 메인 태그 | |
voting_status | 투표여부 | BOOLEAN | DEFAULT FALSE | 해당 게시물이 투표되었는지 여부 |
posting_date | 포스팅일시 | TIMESTAMP | 게시물이 포스팅된 날짜와 시간 | |
created_at | 작성일시 | TIMESTAMP | 게시물이 생성된 날짜와 시간 | |
modified_at | 수정일시 | TIMESTAMP | NULL allowed | 게시물이 마지막으로 수정된 날짜와 시간 (널 허용) |
포스팅 테이블은 위와 같이 만들어서 하루에 한번정도 0.01이긴 하지만, 수집된 글에 보팅을 해볼 계획입니다.
테이블 만들기
이제 두개의 테이블을 생성하기 위한 준비가 되었습니다.
실제로 DuckDB를 이용해서 테이블을 만들어 보겠습니다.
import duckdb
# DuckDB에 연결 (파일 기반 데이터베이스)
conn = duckdb.connect('steemit_auto_posting.db')
# 사용자 테이블 생성 함수
def create_user_table():
conn.execute("""
CREATE TABLE IF NOT EXISTS users (
user_id TEXT UNIQUE,
nickname TEXT NULL,
is_active CHAR(1) DEFAULT 'Y',
registered_at TIMESTAMP,
modified_at TIMESTAMP
);
""")
print("User table created successfully (or already exists).")
# 포스팅 테이블 생성 함수
def create_posting_table():
conn.execute("""
CREATE TABLE IF NOT EXISTS postings (
post_id TEXT UNIQUE,
user_id TEXT REFERENCES users(user_id),
title TEXT,
body TEXT,
tags TEXT,
main_tag TEXT,
voting_status BOOLEAN DEFAULT FALSE,
posting_date TIMESTAMP,
created_at TIMESTAMP,
modified_at TIMESTAMP NULL
);
""")
print("Posting table created successfully (or already exists).")
if __name__ == "__main__":
create_user_table()
create_posting_table()
코드는 위와 같습니다.
실행하기
위 코드를 create_steemit_database.py로 저장
파이썬 라이버러리 설치하기
pip install duckdb
우선 duckdb관련 라이버러리를 설치 합니다.
파이썬 코드 실행하기
python create_steemit_database.py
저를 따라 하셨다면, 위 명령어로 실행이 가능 합니다.
저와 다르게 하셨다면, 파일명을 변경해주십시오.
데이터베이스 생성확인
dir
2024-10-06 오전 11:06 274,432 steemit_auto_posting.db
저는 dir 명령어를 내렸을때 위와 같이 .db파일이 잘 생성되어 있었습니다
여기까지 따라 하셨으면 잘 된 겁니다.
글 마무리
어제 DuckDB를 데이터베이스를 알고, 오늘은 데이터베이스를 만드는 과정을 진행 해 보았습니다.
오늘은 여기까지진행하고, 내일 글에서 사용자를 등록하는 프로그램을 작성해보겠습니다.
감사합니다.
Posted through the ECblog app (https://blog.etain.club)
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
자동보팅 프로그램~ 멋지네요~! ^^
올려주시는 게시글 보면서 지난번 설치했던 Virtual Box 우분트에서 저도 한 번 따라해볼께요~ 고맙습니다! ^^
네 이번 포스팅 큐레이션 주제로 한번 짜보려고 합니다.
잘따라 오십시오 ^^
virtual box 우분투에서 conda 로 환경을 생성 후
알려주신 소스코드를 이용하여 DuckDB를 이용하여 테이블 만들었습니다~! ^^
고맙습니다! ^^
오 훌륭 합니다. 다음 프로그램도 화이팅입니다.