마리아 DB 설치 한 후에 이클립스에서 DB 연동을 해서 작업을 하는 방법
이렇게 디비를 만들고 그것을 사용하는 방법까지 알았으면
이제 디비 파이썬에서 DB 연결할 수 있게 작업을 할거야
http://dev.mysql.com/downloads/connector/python/
에서 installer 를 다운 받아서 설치한다.
64비트 2.7 다운로드 ~
뭐 로그인 하라는데 귀찮으니
No thanks, just start my download. 눌러줘
그럼 하단에 받아짐
그거 실행하면 알아서 설치 됌
default로 C에 설치되는 것을 볼수 있는데
본인과 같이 C에 안하고 다른 드라이브에 설치를 했다면 설치 한 파일들을 옮겨 줘야 함
C:\Python27\Lib\site-packages
이 위치에 방금 설치 한것이 받아 진 것임
이것들을
본인이 설치한 곳에다가 옮겨 줘
lib -> site-oackages 이 위치가 파이썬 라이브러리들을 받아 놓는 데임
그리고
마리아 DB 커맨트 프롬프트 열어줘
데이터 베이스 만든거 확인
create database acorn; 해서 하나 더 만들어줘
( acorn 대신에 아무거나 해줘도 됌 )
show databases; 해서 잘 만들어 졌나 확인 후
use acorn 하면 acorn 이라는 디비를 사용하겠다는 거야
CREATE TABLE member(num INTEGER AUTO_INCREMENT PRIMARY KEY, name TEXT, addr TEXT);
이렇게 입력 해주면 member 테이블에 num, name, addr 칼럼을 만들고
num 은 기본키 설정인데 데이터의 무결성을 지켜주기 위해
오라클에서의 seq 같은 역활을 해주라고 INTEGER AUTO_INCREMENT 붙여준 것
그리고 name 과 addr 은 문자열을 넣겠다고 TEXT 해준 것.
INSERT INTO member (name,addr) VALUES(‘gura’,’nrg’);
이렇게 입력 해주면 gura 라는 이름을 갖고 nrg 라는 주소를 갖는 데이터를 하나 입력해 준것임.
( 혹시나 위에 글자 복붙에서 넣으면 ' (홑따옴표가 이상하게 들어가서 입력이 안될 수도 있음) )
그리고
SELECT * FROM member;
해주면 member 테이블에 있는 데이터들을 볼수 있음
이거를 파이썬에서 해볼 것임
모듈 새거 하나 만들어
데이터를 입력하기 위해 DB_INSERT 로 만들어 주고
1 2 3 | # -*- coding:utf-8 -*- import mysql.connector | cs |
mysql connector 설치 했으면 이게 임포트가 됌
이게 임포트가 안된다면 설치를 뭔가 잘 못 한 것임
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # -*- coding:utf-8 -*- import mysql.connector #DB 접속정보를 dict type 으로 준비한다. config={ "user":"root", "password":"maria", "host":"127.0.0.1", "database":"acorn", "port":3306 } try: #Maria DB 연결 객체 # **config => kwargs 를 dict type 으로 매칭시키기 conn=mysql.connector.connect(**config) #연결되는지 확인 print conn except mysql.connector.Error as err: print err | cs |
계정, 비번, 접속url, database 만든 acorn 사용하기 위해, default로 설치 했으면 port는 3306
dict 로 매칭 시키면
키워드 아규먼트를 알아서 전달해줘
**config 는
user-”root”, password=”maria” 와 같은 것
이제 실행해보면
이렇게 뭔가 나옴
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | # -*- coding:utf-8 -*- import mysql.connector from errno import errorcode #DB 접속정보를 dict type 으로 준비한다. config={ "user":"root", "password":"maria", "host":"127.0.0.1", "database":"acorn", "port":3306 } try: #Maria DB 연결 객체 # **config => kwargs 를 dict type 으로 매칭시키기 conn=mysql.connector.connect(**config) #연결되는지 확인 print conn # member 테이블에 저장할 정보 name1 = u"김구라" addr1 = u"노량진" # 실행할 sql문 준비하기 sql=u"INSERT INTO member (name,addr) VALUES(%s, %s)" # %s 에 바인딩 할 내용을 tuple type 에 담는다. sql_arg=(name1, addr1) # db 에 select, insert, update, delete 등의 작업을 할 객체 cursor=conn.cursor() # .execute(수행할 sql 문, %s 바인딩할 인자들) cursor.execute(sql, sql_arg) conn.commit() print u"member 테이블에 정보를 저장했습니다." except mysql.connector.Error as err: # 예외가 발생했을 때 수행할 작업 if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: print "아이디 혹은 비밀번호가 틀려요" elif err.errno == errorcode.ER_BAD_ERROR: print "DB 오류" else: print "기타 오류" conn.rollback() else: print "정상 수행했습니다." finally: #예외가 발생하던 안하던 수행이 보장되는 블럭에서 마무리 작업 cursor.close() conn.close() | cs |
이렇게 코딩해 주고
실행 시켜보면
디비에 입력을 하는 것이 정상 수행 된 것임
이것만 바꿔서 한번더 데이터를 입력해 주고
여기서 잘 들어갔는지 확인
num 은 table 만들때 AUTO_INCREMENT 해서 만들어서 알아서 늘어나는 것
이제 SELECT 하는 것을 파이썬에서 해볼거야
DB_SELECT 만들어
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | # -*- coding:utf-8 -*- import mysql.connector from errno import errorcode #DB 접속정보를 dict type 으로 준비한다. config={ "user":"root", "password":"maria", "host":"127.0.0.1", "database":"acorn", "port":3306 } try: #Maria DB 연결 객체 # **config => kwargs 를 dict type 으로 매칭시키기 conn=mysql.connector.connect(**config) # db에 select, insert, update, delete작업을 수행할 객체 cursor=conn.cursor() # 실행할 select 문 구성 sql="SELECT num, name, addr FROM member ORDER BY num ASC" # cursor 객체를 이용해서 수행한다. cursor.execute(sql) # select 된 결과 셋 얻어오기 resultList=cursor.fetchall() # tuple 이 들어있는 list print resultList # DB 에 저장된 회원목록 출력해보기 for item in resultList: # item 은 1명의 회원정보가 들어있는 tuple 이다. num=item[0] # 번호 name=item[1] # 이름 addr=item[2] # 주소 info = u"번호:{}, 이름:{}, 주소:{}".format(num, name, addr) print info print u"member 테이블에 정보를 저장했습니다." except mysql.connector.Error as err: # 예외가 발생했을때 수행할 작업 if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: print "아이디 혹은 비밀번호가 틀려요" elif err.errno == errorcode.ER_BAD_DB_ERROR: print "DB 오류" else: print "기타 오류" conn.rollback() else: print "정상 수행 했습니다." finally: # 예외가 발생하던 안하던 수행이 보장되는 블럭에서 마무리 작업 cursor.close() conn.close() | cs |
실행해 보면 이렇게 잘 출력되는 것을 볼수 있어
resultList를 보면 list(대괄호) 에 tuple(소괄호 안에 콤마로 구분된것) 로 담긴것이 확인 됌
DB_SELECT2 로 모듈 하나 더 만들어
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | # -*- coding:utf-8 -*- import mysql.connector from errno import errorcode #DB 접속정보를 dict type 으로 준비한다. config={ "user":"root", "password":"maria", "host":"127.0.0.1", "database":"acorn", "port":3306 } try: #Maria DB 연결 객체 # **config => kwargs 를 dict type 으로 매칭시키기 conn=mysql.connector.connect(**config) # db에 select, insert, update, delete작업을 수행할 객체 cursor=conn.cursor() # select 할 회원의 번호라고 가정하자 num1=1 # 실행할 select 문 구성 sql="SELECT num, name, addr FROM member WHERE num=%s" # selection 인자를 tuple 에 준비한다. sql_arg=(num1,) # cursor 객체를 이용해서 수행한다. cursor.execute(sql, sql_arg) # select 된 결과 셋 얻어오기 row=cursor.fetchone() # 회원정보가 들어있는 tuple print row if row != None: if len(row)>0: num = row[0] # 번호 name = row[1] # 이름 addr = row[2] # 주소 print u"번호:{}, 이름:{}, 주소:{}".format(num, name, addr) else: print num1, u" 번 회원정보는 존재하지 않습니다." except mysql.connector.Error as err: # 예외가 발생했을때 수행할 작업 if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: print "아이디 혹은 비밀번호가 틀려요" elif err.errno == errorcode.ER_BAD_DB_ERROR: print "DB 오류" else: print "기타 오류" conn.rollback() else: print "정상 수행 했습니다." finally: # 예외가 발생하던 안하던 수행이 보장되는 블럭에서 마무리 작업 cursor.close() conn.close() | cs |
select 해야 될 조건에 관련된 어떤 값을 전달하려고 %s 를 사용
select 할 번호를 튜블에 준비해서 사용
실행해 보면
1번만 select 됌
num을 2로 하면 2번만 select 됌
7로 하면 없다고 None 출력
DB_SELECT3 로 모듈 하나 더 만들어
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | # -*- coding:utf-8 -*- import mysql.connector from errno import errorcode #DB 접속정보를 dict type 으로 준비한다. config={ "user":"root", "password":"maria", "host":"127.0.0.1", "database":"acorn", "port":3306 } try: #Maria DB 연결 객체 # **config => kwargs 를 dict type 으로 매칭시키기 conn=mysql.connector.connect(**config) # db에 select, insert, update, delete작업을 수행할 객체 cursor=conn.cursor() # select 할 회원의 번호범위 라고 가정하자 num1=1 num2=2 # 실행할 select 문 구성 sql="SELECT num, name, addr FROM member WHERE num >= %s and num <= %s" # selection 인자를 tuple 에 준비한다. sql_arg=(num1, num2) # cursor 객체를 이용해서 수행한다. cursor.execute(sql, sql_arg) # select 된 결과 셋 얻어오기 resultList=cursor.fetchall() # 회원정보가 들어 있는 list for item in resultList: num=item[0] name=item[1] addr=item[2] info=u"번호:{}, 이름:{}, 주소:{}".format(num, name, addr) print info except mysql.connector.Error as err: # 예외가 발생했을때 수행할 작업 if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: print "아이디 혹은 비밀번호가 틀려요" elif err.errno == errorcode.ER_BAD_DB_ERROR: print "DB 오류" else: print "기타 오류" conn.rollback() else: print "정상 수행 했습니다." finally: # 예외가 발생하던 안하던 수행이 보장되는 블럭에서 마무리 작업 cursor.close() conn.close() | cs |
1번부터 2번까지만 출력
select 된 row 가 여러개면 fetchall
select 된 row 가 한개면 fetchone
리스트에서 튜플을 하나씩 빼는 거야
DB_UPDATE 로 모듈 하나 더 만들어
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | # -*- coding:utf-8 -*- import mysql.connector from errno import errorcode # DB 접속정보를 dict type 으로 준비한다. config={ "user":"root", "password":"maria", "host":"127.0.0.1", "database":"acorn", "port":3306 } try: # Maria DB 연결 객체 # **config => kwargs 를 dict type 으로 매칭시키기 conn=mysql.connector.connect(**config) cursor=conn.cursor() # 수정할 회원의 정보라고 가정 num1=1 name1=u"아무개" addr1=u"어디게" # 실행할 sql 문 sql=u"UPDATE member SET name=%s,addr=%s WHERE num=%s" # update 문에 바인딩할 인자들 sql_arg=(name1, addr1, num1) # update 문 수행 cursor.execute(sql, sql_arg) conn.commit() # DB 에 실제 반영 print num1, u" 번 회원의 정보를 수정 했습니다." except mysql.connector.Error as err: # 예외가 발생했을때 수행할 작업 if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: print "아이디 혹은 비밀번호가 틀려요" elif err.errno == errorcode.ER_BAD_DB_ERROR: print "DB 오류" else: print "기타 오류" conn.rollback() else: print "정상 수행 했습니다." finally: # 예외가 발생하던 안하던 수행이 보장되는 블럭에서 마무리 작업 cursor.close() conn.close() | cs |
수정 됐다고 하니 수정 됐는지 확인 해 보러~~
DB_SELECT 로 가서 실행시켜보면 수정된거 확인가능
DB_DELETE 로 모듈 하나 더 만들어
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | # -*- coding:utf-8 -*- import mysql.connector from errno import errorcode # DB 접속정보를 dict type 으로 준비한다. config={ "user":"root", "password":"maria", "host":"127.0.0.1", "database":"acorn", "port":3306 } try: # Maria DB 연결 객체 # **config => kwargs 를 dict type 으로 매칭시키기 conn=mysql.connector.connect(**config) cursor=conn.cursor() # 삭제할 회원의 번호라고 가정하자 num1=2 sql=u"DELETE FROM member WHERE num=%s" sql_args=(num1,) cursor.execute(sql, sql_args) conn.commit() print num1, "번 회원을 삭제 했습니다." except mysql.connector.Error as err: # 예외가 발생했을때 수행할 작업 if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: print "아이디 혹은 비밀번호가 틀려요" elif err.errno == errorcode.ER_BAD_DB_ERROR: print "DB 오류" else: print "기타 오류" conn.rollback() else: print "정상 수행 했습니다." finally: # 예외가 발생하던 안하던 수행이 보장되는 블럭에서 마무리 작업 cursor.close() conn.close() | cs |
2번 회원을 삭제 했다고 나옴
삭제 됐는지 확인해 보러~~
SELECT 실행해 보면 2번 사라진것 확인가능
'FrameWork > Python' 카테고리의 다른 글
파이썬 wx2 (0) | 2017.08.12 |
---|---|
파이썬 wx 의 Hello world! (0) | 2017.08.12 |
MariaDB Setup (0) | 2017.08.11 |
파이썬 File 관리 (0) | 2017.08.11 |
파이썬 예외처리 try / except (0) | 2017.08.11 |