반응형
만들게 된 계기
주로 replit으로 토이 프로젝트를 돌리는데 db가 필요했다. sql은 설치 못하고(할 수 있나? 안 해봐서 모르겠다) 엑셀은 무겁고 json은 복잡했다. 그래서 csv랑 pandas로 대충 쓸 정도로 만들었다.
전체 코드
import pandas as pd
import os
import csv
csv_data = {}
def get_column(csv_name):
global csv_data
return csv_data[csv_name].columns.to_list()
def get_index(csv_name):
global csv_data
return csv_data[csv_name].index.to_list()
def new(csv_name, columns_list):
global csv_data
file_list = os.listdir('./csv_db')
if f"{csv_name}.csv" in file_list:
return False
with open(f'csv_db/{csv_name}.csv', 'w') as new_csv:
input_column = '|'.join(['index']+columns_list) + '\n'
new_csv.write(input_column)
csv_data[csv_name] = pd.read_csv(f"csv_db/{csv_name}.csv", index_col=0, sep='|')
return True
def append(csv_name, idx, *input_list):
global csv_data
columns = csv_data[csv_name].columns
add_column = pd.DataFrame([input_list], columns=columns, index=[idx])
csv_data[csv_name] = csv_data[csv_name].append(add_column)
csv_data[csv_name].to_csv(f"csv_db/{csv_name}.csv", sep='|')
def read_all(csv_name):
global csv_data
return csv_data[csv_name]
def read_one(csv_name, idx):
global csv_data
try:
result = csv_data[csv_name].loc[idx]
except:
result = None
return result
def read_dot(csv_name, idx, column):
global csv_data
try:
result = csv_data[csv_name].loc[idx, column]
except:
result = None
return result
def read_select(csv_name, column_index, value):
global csv_data
try:
df = csv_data[csv_name]
result = df[df[column_index] == value]
except:
result = None
return result
def update(csv_name, idx, column, data):
global csv_data
csv_data[csv_name].loc[idx, column] = data
csv_data[csv_name].to_csv(f"csv_db/{csv_name}.csv", sep='|')
def delete(csv_name, idx):
global csv_data
csv_data[csv_name] = csv_data[csv_name].drop(idx)
csv_data[csv_name].to_csv(f"csv_db/{csv_name}.csv", sep='|') # ['']
def main():
global csv_data
file_list = os.listdir('./csv_db')
for file_name in file_list:
if file_name[-3:] == 'csv':
csv_data[file_name[:-4]] = pd.read_csv(f"csv_db/{file_name}", index_col=0, sep='|')
print(csv_data)
main()
https://github.com/dilttan/pseudoDB
코드 설명
Create
- new(csv_name, columns_list) : csv_db 폴더에 테이블을 하나 만든다
- append(csv_name, idx, *input_list) : 해당 테이블에 한 행 추가시킨다
Read
- read_all(csv_name) : 해당 테이블 전체를 불러온다
- read_one(csv_name, idx) : 한 행만 불러온다
- read_dot(csv_name, idx, column) : 한 점만 불러온다
- read_select(csv_name, column_index, value) : 해당 열의 값이 해당 값인 경우만 불러온다
Update
- update(csv_name, idx, column, data) : 한 점의 데이터를 바꾼다
Delete
- delete(csv_name, idx) : 한 행을 지운다
또 언제든지 궁금한 내용이 있으면 댓글을 달아주시거나
화면 왼쪽 아래의 디스코드 아이콘을 누르면 실시간으로 답해드립니다!
(아이콘이 보이지 않는다면 에드 블록을 꺼주세요)https://discord.link/feedbackblog
또 위 초대 링크를 눌러 Feed & Back 서버에 들어오시면
블로그의 새 글을 알림 받고
디스코드, 디코 봇 프로그래밍에 대해 질문할 수 있어요!
반응형
그리드형
'디스코드 봇 제작법 > 심화 봇 개발' 카테고리의 다른 글
💻 pycord에서 팩토리 패턴으로 임베드 양식 만들기 (0) | 2022.01.21 |
---|
댓글