RedPlug's Tory

기존에 밥집 추천을 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)
 

마리아 디비 땡겨오는걸 어디선가 긁어왔는데 출처를 저장을 안해놨네요. (__);

메인 파일에서 모듈 불러오고, 함수 변경

 

정상적으로 작동 확인

 

슬랙봇 : github.com/redplug/slackbot