이 내용을 어느 카테고리에 넣을지 고민하다가. 사용한 언어 카테고리에 넣는게 좋을 것 같아 여기다가 작성한다.
python과 pymysql(MySQL)을 사용하여 페이징 처리를 해봤다.
일단, 간단히.
pymysql을 사용하여 DB에 연결하는 방법
def connect_db():
try:
conn = pymysql.connect(
host='',
user='',
password='',
db='',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
return conn
except:
print("DB connection Error")
conn = connect_db()
curs = conn.cursor()
페이징하는 첫번째 방법
per_page = 100 # 한 페이지당 개수
#: 전체 페이지 구하기
total_cnt = 775772 # 전체 개수
# 전체가 775772개라고 임의로 정해둔 것 뿐,
# 이 부분은 "SELECT count(*) FROM table_name"을 통해 구해도 좋다.
total_page = round(total_cnt / per_page)
for page in range(total_page):
query = "SELECT id, kor_sentence FROM sentences LIMIT %s OFFSET %s;"
curs.execute(query, (per_page, page * per_page))
# 파이썬이 아닌 다른 언어에서는 page가 1부터 시작해서 (page-1) 해줘야 하지만, 파이썬의 range()는 0부터 시작하기 때문에 따로 -1 처리를 하지 않았다.
# 직접 실행해보면 알겠지만, MySQL의 OFFSET은 0부터 시작이다.
rows = curs.fetchall()
### input your code ###
페이징하는 두번째 방법
curs.execute("SELECT id, kor_sentence FROM sentences")
rows = curs.fetchmany(size=100)
while rows:
### input your code ###
rows = curs.fetchmany(size=100)
'Python' 카테고리의 다른 글
[Python] epub, ebook(전자책) 파일 읽기 (0) | 2017.10.30 |
---|---|
[Python] 순열 만들기 (0) | 2017.10.27 |
[Python] Query String을 Dictionary로 바꾸기 (0) | 2017.10.12 |
[Python] Dictionary를 key/value 기준으로 정렬하기 (0) | 2017.10.12 |
[Python] subprocess, curl 활용하여 티켓 풀리면 알려주기 (0) | 2017.10.12 |