pymysql
라이브러리 설치 후, MySQL과 연동하는 데이터베이스 연동 프로그램을 작성할 수 있다.
# 1. MySQL 연결하기 : 연결자 = pymysql.connect(연결 옵션)
import pymysql
conn = pymysql.connect(host='서버IP주소', user='사용자', password='암호', db='데이터베이스', charset='utf8')
# 2. 커서 생성하기 : 커서이름 = 연결자.corsor()
cur = conn.cursor()
# 3. 테이블 만들기 : 커서이름.execute("CREATE TABLE ~")
cur.execute("CREATE TABLE table_name (colum1 TYPE, ..)")
# 4. 데이터 입력하기 : 커서이름.execute("INSERT ~")
cur.execute("INSERT INTO table_name VALUES(value, ..)")
# 5. 입력한 데이터 저장하기 : 연결자.commit()
conn.commit()
# 6. MySQL 연결 종료하기 : 연결자.close()
conn.close()
import pymysql
# 전역 변수 선언부
conn, cur = None, None
data1, data2, data3 = "", "", ""
sql = ""
# 메인 코드
conn = pymysql.connect(host='127.0.0.1', user='root', password='0000', db='soloDB', charset='utf8')
cur = conn.cursor()
while (True) :
data1 = input("사용자 ID : ")
if data1 == "" :
break;
data2 = input("사용자 이름 : ")
data3 = input("사용자 이메일 : ")
sql = "INSERT INTO userTable VALUES('data1', `data2`, data3)"
cur.execute(sql)
conn.commit()
conn.close()
# 1. MySQL 연결하기 : 연결자 = pymysql.connect(연결 옵션)
# 2. 커서 생성하기 : 커서이름 = 연결자.cursor()
# 3. 데이터 조회하기 : 커서이름.execute("SELECT 문장")
# 4. 조회한 데이터 출력하기 (반복) : 커서이름.fetchone()
# fetchone() 한 행씩 접근 or fetchall() 한꺼번에 접근
# 5. MySQL 연결 종료하기 : 연결자.close()
import pymysql
# 전역 변수 선언부
conn, cur = None, None
data1, data2, data3 = "", "", ""
row = None
# 메인 코드
conn = pymysql.connect(host='127.0.0.1', user='root', password='0000', db='soloDB', charset='utf8')
cur = conn.cursor()
cur.execute("SELECT * FROM userTable") # 조회한 결과를 cur 변수에 저장
print("사용자 ID, 사용자 이름, 사용자 이메일")
while (True) :
row = cur.fetchone()
if row == None :
break;
data1 = row[0]
data2 = row[1]
data3 = row[2]
print(data1, data2, data3)
conn.close()
마우스 클릭만으로 데이터 입력, 조회가 가능하다.
from tkinter import * # GUI 관련 모듈 제공하는 표준 윈도 라이브러리
root = Tk() # 기본이 되는 윈도를 반환하여, root 변수에 저장
root.title("윈도 제목") # 제목 표시
root.geometry("400x200") # 초기 크기 지정
# 이 부분에 코딩을 추가하여 화면을 구성하고 처리한다.
root.mainloop() # 이벤트 처리
pack()
pack(side=LEFT|RIGHT|TOP|BOTTOM)
pack(fill=X, padx=10, pady=10)
label(부모 윈도, 옵션 ..)
label1 = Label(root, text="라벨", font=("Noto Sans KR", 20), bg="black", fg="yellow")
label1.pack()
Button(부모 윈도, 옵션 ..)
def clickButton() :
messagebox.showinfo('alt 제목', 'alt 내용')
# 메인 코드
button1 = Button(root, text="여기 클릭", fg="blue", bg="red", command=clickButton)
button1.pack(expand = 1) # 버튼을 화면 중앙에 표현
# 프레임 구역 나누기
upFrame = Frame(root)
upFrame.pack()
downFrame = Frame(root)
downFrame.pack()
# 입력을 위한 엔트리
editBox = Entru(upFrame, width=10)
editBox.pack(padx=20, pady=20)
# 리스트 박스 나타내기
listbox = Listbox)downFrame, bg="blue")
listbox.pack()
# 리스트 박스에 데이터 입력
listbox.insert(END, "맨 뒤에 첨부하기")
import pymysql
from tkinter import *
from tkinter import messagebox
## 메인 코드부 1
# 1) 데이터 입력 프로그램
def insertData() :
conn, cur = None, None
data1, data2, data3 = "", "", ""
sql = ""
conn = pymysql.connect(host='127.0.0.1', user='root', password='0000', db='soloDB', charset='utf8')
cur = conn.cursor()
data1 = edt1.get()
data2 = edt1.get()
data3 = edt1.get()
sql = "INSERT INTO userTable VALUES('" + data1 + "', '" + data2 + "', " + data3 + ")"
cur.execute(sql)
conn.commit()
conn.close()
messagebox.showinfo('성공', '데이터 입력 성공')
# 2) 데이터 출력 프로그램
def selectData() :
strData1, strData2, strData3 = [], [], []
conn = pymysql.connect(host='127.0.0.1', user='root', password='0000', db='soloDB', charset='utf8')
cur = conn.cursor()
cur.execute("SELECT * FROM userTable")
strData1.append("ID")
strData2.append("name")
strData3.append("email")
while (True) :
row = cur.fetchone()
if row == None :
break;
strData1.append(row[0]); strData2.append(row[1]); strData3.append(row[2])
# 일단 화면에서 3개의 리스트 박스를 모두 비운다.
listData1.delete(0, listData1.size() -1)
listData2.delete(0, listData1.size() -1)
listData3.delete(0, listData1.size() -1)
for item1, item2, item3 in zip(strData1, strData2, strData3) :
# 각 리스트 박스에 앞에서 준비한 strData1~3까지 값들을 다시 채운다.
# 결국 화면의 리스트 박스에는 조회된 결과가 모두 출력된다.
listData1.insert(END, item1)
listData2.insert(END, item2)
listData3.insert(END, item3)
conn.close()
## 메인 코드부 2
root = Tk()
root.geometry("400*300")
root.title("완전한 GUI 응용 프로그램")
edtFrame = Frame(root)
edtFrame.pack()
listFrame = Frame(root)
listFrame.pack(side=BOTTOM, fill=BOTH, expand=1)
edt1 = Entry(edtFrame, with=10); edt1.pack(side=LEFT, padx=10, pady=10)
edt2 = Entry(edtFrame, with=10); edt2.pack(side=LEFT, padx=10, pady=10)
edt3 = Entry(edtFrame, with=10); edt3.pack(side=LEFT, padx=10, pady=10)
btnInsert = Button(edtFrame, text="입력", command=insertData)
btnInsert.pack(side=LEFT, padx=10, pady=10)
btnSelect = Button(edtFrame, text="조회", command=selectData)
btnSelect.pack(side=LEFT, padx=10, pady=10)
listData1 = Listbox(listFrame, bg='yellow')
listData1.pack(side=BOTTOM, fill=BOTH, expand=1)
listData2 = Listbox(listFrame, bg='yellow')
listData2.pack(side=BOTTOM, fill=BOTH, expand=1)
listData3 = Listbox(listFrame, bg='yellow')
listData3.pack(side=BOTTOM, fill=BOTH, expand=1)
root.mainloop()