안녕하세요 오늘은 pymysql 연동방법을 알려드리겠습니다.
로컬환경이나 서버 둘다 상관 없습니다.
목차
1.MySQL 연결
2.커서 생성
3.테이블 만들기
4.데이터 입력
5.입력한 데이터 저장
6.MySQL 연결 종료
1.MySQL 연결
먼저 리눅스나 myworkbench에서 soloDB 생성

사진 설명을 입력하세요.
다음으로 vscode 나 리눅스환경에서 파이썬 파일을 만듭니다.
2.커서 생성
import pymysql
#main code
conn = pymysql.connect(host='127.0.0.1', user='root', password='ZZ66&!!', db='soloDB', charset='utf8')
cur = conn.cursor()
3.테이블 만들기

사진 설명을 입력하세요.
4.데이터 입력
cur.execute("INSERT INTO userTable VALUES('a', '뷔', 'hong@naver.com', 1996)")
cur.execute("INSERT INTO userTable VALUES('b', '지연', 'hong@naver.com', 1996)")
cur.execute("INSERT INTO userTable VALUES('c', '알윤', 'hong@aver.com', 1996)")
cur.execute("INSERT INTO userTable VALUES('d', '홍지윤', 'hong@naver.com', 1996)")
cur.execute("INSERT INTO userTable VALUES('e', '행복', 'hong@naver.com', 1996)")
5.입력한 데이터 저장
conn.commit()
6.MySQL 연결 종료
conn.close()
GUI 응용프로그램를 활용하는 방법
파이썬은 윈도 화면을 제공합니다.
tkinter을 사용하면 창을 띄우고 창을 꾸밀 수 있습니다.
라벨, 체크박스, 라디오 위젯 등을 만들 수 있습니다.
https://ko.linux-console.net/?p=10318#gsc.tab=0
tkinter설치
import tkinter
root = tkinter.Tk()
root.mainloop()
from tkinter import *
root = Tk()
root.geometry("300x100")
label1 = Label(root, textr="혼공 SQL은")
label2 = Label(rrot, text="쉽습니다.", font = ("궁서체", 30), bg="blue", fg="yellow")
label1.pack()
label2.pack()
root.mainloop()
import pymysql
conn, cur = None, None
data1, data2, data3, data4 = "", "", "", ""
sql=""
#main code
conn = pymysql.connect(host='127.0.0.1', user='c18st10', password='6f60860nnayoeFzU', db='c18st10', charset='utf8')
cur = conn.cursor()
#한줄씩 갖고 와서 입력해
while(True) :
data1 = input("사용자 ID ==> ")
if data1 == "":
break;
data2 = input("사용자 이름 ==> ")
data3 = input("사용자 이메일 ==> ")
data4 = input("사용자 출생연도 ==> ")
sql = "INSERT INTO userTable VALUES('" + data1 + "','" + data2 + "','" + data3 + "'," + data4 + ")"
cur.execute(sql)
conn.commit()
conn.close()
import pymysql
conn, cur = None, None
data1, data2, data3, data4 = "", "", "", ""
row = None
#main code
conn = pymysql.connect(host='127.0.0.1', user='c18st10', password='6f60860nnayoeFzU', db='c18st10', charset='utf8')
cur = conn.cursor()
cur.execute("SELECT * FROM userTable")
print("사용자ID 사용자이름 이메일 출생연도")
print("------------------")
#한줄씩 갖고 와서 입력해
while(True) :
row = cur.fetchone()
if row==None :
break
data1 = row[0]
data2 = row[1]
data3 = row[2]
data4 = row[3]
print("%5s %15s %20s %d" % (data1, data2, data3, data4))
conn.close()
import pymysql
conn, cur = None, None
data1, data2, data3, data4 = "", "", "", ""
row = None
#main code
conn = pymysql.connect(host='127.0.0.1', user='c18st10', password='6f60860nnayoeFzU', db='c18st10', charset='utf8')
cur = conn.cursor()
cur.execute("SELECT * FROM userTable")
print("사용자ID 사용자이름 이메일 출생연도")
print("------------------")
#한줄씩 갖고 와서 입력해
while(True) :
row = cur.fetchone()
if row==None :
break
data1 = row[0]
data2 = row[1]
data3 = row[2]
data4 = row[3]
print("%5s %15s %20s %d" % (data1, data2, data3, data4))
conn.close()
8-7

사진 설명을 입력하세요.
8-8
from tkinter import *
root = Tk()
button1 = Button(root, text="혼공1")
button2 = Button(root, text="혼공2")
button3 = Button(root, text="혼공3")
button1. pack(side=TOP, fill=X, padx=10, pady=10)
button2. pack(side=TOP, fill=X, padx=10, pady=10)
button3. pack(side=TOP, fill=X, padx=10, pady=10)
root.mainloop()
8-9
from tkinter import *
root = Tk()
root.geometry("200x250")
upFrame = Frame(root)
upFrame.pack()
downFrame = Frame(root)
upFrame.pack()
editBox = Entry(upFrame, width = 10)
editBox.pack(padx = 20,pady = 20)
listbox = Listbox(downFrame, bg = 'yellow')
listbox.pack()
listbox.insert(END, "하나")
listbox.insert(END,"둘")
listbox.insert(END,"셋")
root.mainloop()
8-10
#402
import pymysql
from tkinter import *
from tkinter import messagebox
def insertData() :
con, cur = None, None
data1, data2, data3, data4 ="","","",""
sql=""
conn = pymysql.connect(host='127.0.0.1', user='root', password='antonio77!!A', db='soloDB', charset='utf8')
cur = conn.cursor()
data1 = edt1.get(); data2 = edt2.get()
data3 = edt3.get(); data4 = edt4.get()
sql = "INSERT INTO userTable VALUES('" + data1 + "','" + data2 + "','" + data3 + "'," + data4 + ")"
cur.execute(sql)
conn.commit()
conn.close()
messagebox.showinfo('성공', '데이터 입력 성공')
def selectData():
strData1, strData2, strData3, strData4 = [],[],[],[]
conn = pymysql.connect(host='127.0.0.1', user='root', password='antonio77!!A', db='soloDB', charset='utf8')
cur = conn.cursor()
cur.execute("SELECT * FROM userTable")
strData1.append("사용자 ID"); strData2.append("사용자 이름")
strData3.append("사용자 이메일"); strData4.append("사용자 출생연도")
strData1.append("--------"); strData2.append("--------")
strData3.append("--------"); strData4.append("--------")
while (True) :
row = cur.fetchone()
if row == None:
break;
strData1.delete(0,listData1.size() -1)
strData2.delete(0,listData2.size() -1)
strData3.delete(0,listData3.size() -1)
strData4.delete(0,listData4.size() -1)
for item1, item2, item3, item4 in zip(strData1, strData2, strData3, strData4):
listData1.insert(END, item1); listData2.insert(END, item2)
listData3.insert(END, item3); listData4.insert(END, item4)
conn.close()
root = Tk()
root.geometry("600x300")
root.title("완전한 GUI 응용 프로그램")
edtFrame = Frame(root);
edtFrame.pack()
listFrame = Frame(root)
listFrame.pack(side = BOTTOM, fill=BOTH, expand=1)
edt1=Entry(edtFrame, width=10); edt1.pack(side=LEFT,padx=10,pady=10)
edt2=Entry(edtFrame, width=10); edt2.pack(side=LEFT,padx=10,pady=10)
edt3=Entry(edtFrame, width=10); edt3.pack(side=LEFT,padx=10,pady=10)
edt4=Entry(edtFrame, width=10); edt4.pack(side=LEFT,padx=10,pady=10)
btnInsert = Button(edtFrame, text="입력", command = insertData)
btnInsert.pack(side=LEFT, padx=10,pady=10)
btnInsert = Button(edtFrame, text="조회", command = selectData)
btnInsert.pack(side=LEFT, padx=10,pady=10)
listData1 = Listbox(listFrame,bg = 'yellow')
listData1.pack(side=LEFT,fill=BOTH, expand=1)
listData2 = Listbox(listFrame,bg = 'yellow')
listData2.pack(side=LEFT,fill=BOTH, expand=1)
listData3 = Listbox(listFrame,bg = 'yellow')
listData3.pack(side=LEFT,fill=BOTH, expand=1)
listData4 = Listbox(listFrame,bg = 'yellow')
listData4.pack(side=LEFT,fill=BOTH, expand=1)
root.mainloop()
만약 다음과 같이 에러가 발생한다면 mysql_native_password 로 접근할 수 있도록 처리해야 합니다.

사진 설명을 입력하세요.
해결하기 위해서는 터미널에서 mysql에 접속 후, 다음과 같이 비밀번호를 변경해줍니다.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '변경할-비밀번호';
mysql> FLUSH PRIVILEGES;
'SQL' 카테고리의 다른 글
SQL 계층형 쿼리 사용법 (0) | 2024.04.30 |
---|---|
MSSQL SQL Server / SSMS / 쿼리 만들고 실행하는 방법 (0) | 2024.03.11 |
sql 심화 FOREIGN KEY, CASCADE, Constraint, CHECK (0) | 2023.09.04 |
리눅스 환경 sql (0) | 2023.08.22 |