반응형

1. Microsoft SQL Server DB 모듈

Python에서 Microsoft SQL Server 데이타베이스를 사용하기 위해 우선 Python DB API 표준을 따르는 MSSQL DB 모듈을 다운받아 설치한다. MSSQL DB 를 지원하는 Python 모듈은 여러 가지가 있는데, 여기서는 pymssql 이라는 모듈을 사용해 본다. pymssql은 Python DB API (PEP-249) 스펙을 따르는 FreeTDS 위에 구현된 파이썬 모듈이다.

MSSQL DB 모듈 중 하나인 pymssql 모듈을 다음과 같이 설치한다.

$ pip install pymssql

※ pymmsql 설치오류시

https://docs.microsoft.com/ko-kr/sql/connect/python/pymssql/step-1-configure-development-environment-for-pymssql-python-development?view=sql-server-ver15

의 절차를 따라서 설치한다.

 

2. MSSQL 사용 절차

Python에서 MSSQL에 있는 데이타를 사용하는 일반적인 절차는 다음과 같다.

  1. pymssql 모듈을 import 한다
  2. pymssql.connect() 메소드를 사용하여 MSSQL에 Connect 한다. 호스트명, 로그인, 암호, 접속할 DB 등을 파라미터로 지정할 수 있다.
  3. DB 접속이 성공하면, Connection 객체로부터 cursor() 메서드를 호출하여 Cursor 객체를 가져온다. DB 커서는 Fetch 동작을 관리하는데 사용된다.
  4. Cursor 객체의 execute() 메서드를 사용하여 SQL 문장을 DB 서버에 보낸다.
  5. SQL 쿼리의 경우 Cursor 객체의 fetchall(), fetchone(), fetchmany() 등의 메서드를 사용하여 데이타를 서버로부터 가져온 후, Fetch 된 데이타를 사용한다.
  6. 삽입, 갱신, 삭제 등의 DML(Data Manipulation Language) 문장을 실행하는 경우, INSERT/UPDATE/DELETE 후 Connection 객체의 commit() 메서드를 사용하여 데이타를 확정 갱신한다.
  7. Connection 객체의 close() 메서드를 사용하여 DB 연결을 닫는다.

아래 예제들의 기본 샘플 데이타로 아래와 같은 Customer 테이블이 있다고 가정하자.

3. MSSQL 쿼리

SQL 쿼리는 SELECT 문을 작성하여 execute() 메서드를 실행하면 된다. 아래 예제는 위에서 설명한 일반적인 MSSQL 사용 절차를 따른 것으로, 간단한 SELECT 문을 실행한 후, 전체 ROW 데이타를 출력하는 예이다.

 

# pymssql 패키지 import
import pymssql
 
# MSSQL 접속
conn = pymssql.connect(server="Your.Server.IP:Port", user="I.D", password="PassWord", database="DB Name", charset='utf8')
 
# Connection 으로부터 Cursor 생성
cursor = conn.cursor()
 
# SQL문 실행
cursor.execute('SELECT * FROM Customer;')
 
# 데이타 하나씩 Fetch하여 출력
row = cursor.fetchone()
while row:
    print(row[0], row[1])
    row = cursor.fetchone()
   
# 연결 끊기
conn.close() 

(1) 커서의 fetchone() 메서드는 데이타를 클라이언트로 하나씩 가져올 때 사용된다. fetchone()을 여러 번 호출하면, 호출 때 마다 한 Row 씩 데이타를 가져오게 된다. 그리고, 모든 데이타를 한꺼번에 클라이언트로 가져올 때는 fetchall()을, n개 만큼의 데이타만 가져올 때는 fetchmany(n)를 사용한다.

(2) DB 사용이 끝난 경우 close() 메서드를 호출하여 연결을 끊어 준다.

반응형
반응형
text = """<div>
<h1>Title</h1>
<p>A long text........ </p>
<a href=""> a link </a>
</div>"""

이러한 string 텍스트가 있을때 string 내의 html 태그를 지우고 싶을떄가 있다.

두가지 방법을 이용할 수 있다.

 

1. 정규표현식  (regex)

import re

def cleanhtml(raw_html):
  cleanr = re.compile('<.*?>')
  cleantext = re.sub(cleanr, '', raw_html)
  return cleantext

만약 &nsbm 가 포함된 string 이라면

import re

def cleanhtml(raw_html):
  cleanr = re.compile('<.*?>|&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});')
  cleantext = re.sub(cleanr, '', raw_html)
  return cleantext

 

2. BeautifulSoup 

from bs4 import BeautifulSoup
cleantext = BeautifulSoup(raw_html, "lxml").text

 

 

외부라이브러리를 사용하는것을 지양한다면 1번안을 사용하나

text의 길이가 매우 큰 경우에는 속도적인 면에서는 2번안이 더 좋다.

반응형

+ Recent posts