[Python] 밥집 리스트 > DB로 변경 하기
언어/Python2020. 11. 8. 10:19
기존에 밥집 추천을 list로 만들어둔게 있었는데 변경할 때마다 매번 코드를 수정해줘야 하는 불편함이 좀 있어서...
DB에서 긁어오는 방법으로 변경 하기로 합니다.
우선 서버에 마리아 DB를 설치 한 후에 기존에 리스트 값을 DB에 넣어줍니다. (csv로 밀어넣음)
(bob_db database에 bob table)
필드는 number, name, url
밥집 리스트DB를 불러와서 추천해주기 위한 모듈을 하나 만듭니다.
모듈에서 DB에서 number를 불러와서 db사이즈 확인 후 랜덤하게 숫자를 선택후에 해당 number에 해당하는 name과 url을 가져와서 슬랙 봇에 붙여넣을 수 있게 변경 후 값을 리턴 합니다.
bob_recommend.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# -*- coding:utf-8 -*-
import os
import mysql.connector
import random
def food_answer():
dbid = os.environ.get('DATABASE_ID')
dbpassword = os.environ.get('DATABASE_PASSWORD')
config = {
"user": dbid,
"password": dbpassword,
"host": "localhost", #local
"database": "bob_db", #Database name
"port": "3306" #port는 최초 설치 시 입력한 값(기본값은 3306)
}
try:
conn = mysql.connector.connect(**config)
print(conn)
# db select, insert, update, delete 작업 객체
cursor = conn.cursor()
# 실행할 select 문 구성
sql = "SELECT MAX(number) FROM bob"
# cursor 객체를 이용해서 수행한다.
cursor.execute(sql)
# select 된 결과 셋 얻어오기
resultList = cursor.fetchall() # tuple 이 들어있는 list
size = resultList[0][0]
print(size)
random_select = random.randrange(1,int(size))+1
sql = f"SELECT name,url FROM bob where number = {random_select}"
cursor.execute(sql)
resultList = cursor.fetchall() # tuple 이 들어있는 list
result = f"<{resultList[0][1]}|*{resultList[0][0]}*>"
return result
except mysql.connector.Error as err:
print(err)
|
마리아 디비 땡겨오는걸 어디선가 긁어왔는데 출처를 저장을 안해놨네요. (__);
메인 파일에서 모듈 불러오고, 함수 변경
정상적으로 작동 확인