Dork's port

Python에서 Database 연동 및 사용 (mysql, mariadb) 본문

Develop

Python에서 Database 연동 및 사용 (mysql, mariadb)

Dork94 2020. 12. 14. 17:23

이전에 정리한 글이 너무 난잡해서 다시 정리해서 글을 작성한다.

이글에서는 연동을 위해서는 pymysql 사용하며 pymysql은 pip 명령어를  통해 설치가 가능하다 (pip install pymysql)

아래는 pymysql을 이용해서 database에 접속하는 class이다. 

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_value(self,table_name, values):
        sql = 'INSERT INTO {0} VALUES ({1})'.format(table_name, ','.join(values))
        self.curs.execute(sql)
        self.conn.commit()


    def insert_value_with(self,table_name, col, values):
        sql = 'INSERT INTO {0}} ({1}) VALUES ({2})'.format(table_name, ','.join(col), ','.join(values))
        self.curs.execute(sql)
        self.conn.commit()


 

class 선언시  host , id, password, database 이름이 필요하며, 예제 코드를 통해 어떻게 인자로 전달하는지 확인할 수 있다.

 

예제를 위해 db.dork94.com에 test 데이터베이스를 추가하였다.

테스트 데이터베이스

데이터베이스의 table에는 id와 password 저장을 위한 id, pw 필드가 있고 모두 문자열을 입력받도록 설계되어있다.

아래는 예제 테스트 코드이다.  이때 마지막 인자인 test는 database 이름이다. 원격에 있는 서버로 접속할 경우 localhost 대신 hostname 이나 ip를 적어주면 된다.

import dbconfig

if __name__ == '__main__':
    mysql_controller = dbconfig.MysqlController('localhost', 'root', 'root-pass', 'test')
    table_name = 'users'
    mysql_controller.insert_value(table_name, ['"test"', '"test123"'])
    mysql_controller.insert_value_with(table_name, ['id'], ['"THIS IS ID"'])

 

결과를 보면 정상적으로 추가된 것을 확인할 수 있다! 

SELECT 화면

 

코드를 Github 등에 올릴때에는 database credential을 같이 올리지 않도록 주의하자!

코드는 github.com/JangHanbin/pymysql-basic에서 확인 가능하다,

 

JangHanbin/pymysql-basic

Pymysql-basic. Contribute to JangHanbin/pymysql-basic development by creating an account on GitHub.

github.com

 

Comments