빅데이터/빅데이터 with python

[빅데이터 python] 웹 검색 엔진 만들기 - 3. MorphemeSql 클래스 정의

언제나휴일 2020. 11. 17. 10:58
반응형

안녕하세요. 언제나휴일입니다.

[빅데이터/빅데이터 with python] - [빅데이터 python] 웹 검색 엔진 만들기 - 1. 웹 검색 엔진 소개

[빅데이터/빅데이터 with python] - [빅데이터 python] 웹 검색 엔진 만들기 - 2. 형태소 및 Inverse 테이블 정의

 

이번에는 형태소 테이블과 연동하는 MorphemeSql 클래스를 정의합시다.

 

1. 사용할 라이브러리

파이썬에서 MSSQL을 사용하려면 pymssql을 포함합니다.

데이터베이스와 연결하는 부분은 미리 작성한 SqlCon을 사용할 거예요.

import pymssql
from SqlCon import SqlCon

2. AddMorpheme - 형태소 추가하기

제일 먼저 형태소를 추가하는 메서드를 정의합시다.

class MorphemeSql:
    @staticmethod
    def AddMorpheme(mo):
        cursor = SqlCon.Cursor()

추가 쿼리 문자열을 작성합니다.

        query = str.format("Insert into Morpheme(word) values('{0}')",mo.word)

쿼리를 실행하고 커밋을 수행하는 것을 시도합니다.

만약 예외가 발생하면 False를 반환하고 성공하면 True를 반환합니다.

        try:
            cursor.execute(query)
            SqlCon.Commit()
        except:
            return False
        else:
            return True

3. FindMid - 형태소 일련 번호 찾기

이번에는 형태소 단어로 일련 번호를 찾는 메서드를 작성합시다.

    @staticmethod
    def FindMid(word):
        cursor = SqlCon.Cursor()    

검색 쿼리 문자열을 작성합시다.

        query = str.format("select mid from Morpheme where (word='{0}')",word)

쿼리를 실행한 후 한 행을 얻어옵니다.

        cursor.execute(query)
        row = cursor.fetchone()

얻어온 결과가 있다면 0번 컬럼을 반환합니다.

(검색 쿼리 문자열에 mid 하나를 얻어오는 것이므로 0번 컬럼이 mid입니다.)

얻어온 결과가 없다면 0을 반환하기로 할게요.

        if row:
            return row[0]
        return 0

4. ListMorpheme - 형태소 목록 구하기

이번에는 형태소 테이블에 있는 모든 형태소 단어를 구하는 메서드를 작성합시다.

    @staticmethod
    def ListMorpheme():

반환할 컬렉션을 생성합니다.

        moes = list()

검색 쿼리 문자열을 작성한 후 쿼리를 실행합니다.

        cursor = SqlCon.Cursor()        
        query = str.format("select word from Morpheme")
        cursor.execute(query)

한 행씩 얻어오는 것을 반복합니다. 얻어온 것은 형태소 컬렉션에 추가합니다.

반복문을 마치면 형태소 컬렉션을 반환합니다.

        row = cursor.fetchone()  
        while row:
            moes.append(row[0]) 
            row = cursor.fetchone()
        return moes

5. 전체 코드

#MorphemeSql.py
import pymssql
from SqlCon import SqlCon
class MorphemeSql:
    @staticmethod
    def AddMorpheme(mo):
        cursor = SqlCon.Cursor()
        query = str.format("Insert into Morpheme(word) values('{0}')",mo.word)
        try:
            cursor.execute(query)
            SqlCon.Commit()
        except:
            return False
        else:
            return True
    @staticmethod
    def FindMid(word):
        cursor = SqlCon.Cursor()    
        query = str.format("select mid from Morpheme where (word='{0}')",word)
        cursor.execute(query)
        row = cursor.fetchone()
        if row:
            return row[0]
        return 0
    @staticmethod
    def ListMorpheme():
        moes = list()
        cursor = SqlCon.Cursor()        
        query = str.format("select word from Morpheme")
        cursor.execute(query)
        row = cursor.fetchone()  
        while row:
            moes.append(row[0]) 
            row = cursor.fetchone()
        return moes

 

반응형