일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 홍혜걸
- 해킹
- 김영권 아내
- 조희연
- 양적완화
- 임영규
- 이태원 클라쓰 15회 예고
- libtins
- 이상형 만들기
- 금리인하
- 김재석
- 제넥신
- 성남은혜의강교회
- 불가피
- 최강욱
- 킹덤 고근희
- 학교 개학 연기 4월
- 성남 코로나 확진자
- 스콜피온킹
- 스페인 코로나
- 폰폰테스트
- 픽크루
- 고민정
- 유튜버 김재석
- 김영권
- 미국 금리인하
- 리리남매
- 뭉쳐야 찬다
- 이지혜
- 은혜의 강 교회
Archives
- Today
- Total
Dork's port
Python에서 db 연동하기(mysql, mariadb) 본문
python에서 db 연동에 대한 블로그 글을 다시 작성하였습니다. 아래 링크를 참조하시면 더 좋을 것 같습니다 :)
2020/12/14 - [Develop] - Python에서 Database 연동 및 사용 (mysql, mariadb)
예전에 파이썬에서 db를 사용할 일이있어서 코딩했다가, 오랜만에 다시 사용할일이 생겨 찾아봤다.
또 까먹을 것 같아 정리차 남겨둔다.
Python에서 database를 사용할 수 있는 방법은 여러가지가 있지만, 그 중에서 나는 mysql이나 mariadb를 사용하므로 이것들과 연동이 되는 라이브러리를 찾아보았다.
그래서 나는 pymysql을 이용할 것이다!
코드는 다음과 같다
import pymysql
# dbconfig.py
class MysqlController:
def __init__(self, host, id, pw, db_name):
self.conn = pymysql.connect(host=host, user= id, password=pw, db=db_name,charset='utf8')
self.curs = self.conn.cursor()
def insert_total(self,total):
sql = 'INSERT INTO entire_nodes (count_of_nodes) VALUES (%s)'
self.curs.execute(sql,(total,))
self.conn.commit()
간단하게 설명하자면 class에서 인자값으로 host와 id, pw, 그리고 db이름을 인자로 받아 먼저 연결한다.
그리고 insert_total함수를 이용해 값을 넣을 수 있다.
이때 sql의 문자열에 %s를 넣고 execute시에 값을 인자로 넘기는 것을 볼 수 있는데, 이는 sql_injection 공격을 막기 위함이니 저렇게 적도록 하자 :)
그리고 위를 사용하는 코드는 다음과 같다.
import dbconfig
import requests
from bs4 import BeautifulSoup
from time import sleep
import re
# main.py
url = 'https://www.ethernodes.org/network/1'
INTERBAL = 60
if __name__=='__main__':
regex = re.compile(r'Total(.*\d)\s')
mysql_controller = dbconfig.MysqlController('localhost','root','test123','etherstat')
while True:
res = requests.get(url)
if res.status_code == 200:
soup = BeautifulSoup(res.text, 'html.parser')
items = soup.find_all('li')
for item in items:
result = regex.search(item.text)
if result:
mysql_controller.insert_total(result.groups(1)[0])
sleep(INTERBAL)
위 코드는 특정 사이트에서 특정 값을 받아 데이터 베이스에 추가시키는 코드이다.
데이터베이스는 다음과 같이 구성되어있다.
'Develop' 카테고리의 다른 글
PyQt에서 QPlainText를 이용해 정보 출력하기(색상 변경) (2) | 2019.04.14 |
---|---|
pyqt를 이용한 QTreeWidget 이용 및 리스트 간 항목 이동 구현하기 (4) | 2019.04.13 |
apktool 리패키징 오류해결 (2) | 2019.02.25 |
Python pycrypto 설치시 구문 오류 Syntax error stdint (2) | 2019.02.18 |
음성변조 복원, 음성 변조하기 (Voice Modulation) (1) | 2018.12.21 |
Comments