Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

오뚝이

5/22 10일차- SQL 파이썬 연동 sqlalchemy 본문

회고

5/22 10일차- SQL 파이썬 연동 sqlalchemy

5뚝이 2024. 5. 22. 17:51

ORM

객체로 다루겠다.

장고ORM 많이 씀. 파이썬ORM

alchemy

 

DDL

 

DCL

데이터제어보다는 사용자 제어라고 생각해라

 

리보크와 디나이의 차이.

https://mozi.tistory.com/307#google_vignette

 

[MSSQL] REVOKE 와 DENY 의 차이점

SQL Server 에서 권한에 관련하여 GRANT, REVOKE, DENY 구문을 지원합니다. 각 구문은 다음과 같은 특성을 지닙니다.GRANT 는 유저에 개체에 대한 권한을 허용DENY 는 유저에 개체에 대한 권한을 차단REVOKE

mozi.tistory.com

 

 

 

sqlalchemy

 

 

# import pymysql
#pip install mysqlclient
#pip install sqlalchemy
from sqlalchemy.engine.url import URL
from sqlalchemy import create_engine

from tkinter import *
from tkinter import messagebox

mysql_db = {
    "username" : "root",
    "password" : "",
    "host" : "localhost",
    "port" : 3306
}

# print(URL(**mysql_db))  #  **는 딕셔너리

mysql = {"drivername" : 'mysql', 'database' : 'localhost'}

# print(URL(**mysql))

db_uri = "mysql://localhost:3306/test"

engine = create_engine(db_uri)
print(engine)

import sys
sys.exit() # 하단의 코드를 무시


## 함수 선언부
def insertData():
    con, cur = None, None
    data1, data2, data3, data4 = "", "", "", ""
    sql = ""

    conn = pymysql.connect(
        host="127.0.0.1", user="root", password="", db="hanbitDB", charset="utf8"
    )
    cur = conn.cursor()

    data1 = edt1.get()
    data2 = edt2.get()
    data3 = edt3.get()
    data4 = edt4.get()
    try:
        sql = (
            "INSERT INTO usertbl (userid, name, email, birth) VALUES('"
            + data1
            + "','"
            + data2
            + "','"
            + data3
            + "',"
            + data4
            + ")"
        )

        print("====>")
        print(sql)
        cur.execute(sql)
    except:
        messagebox.showerror("오류", "데이터 입력 오류가 발생함")
    else:
        messagebox.showinfo("성공", "데이터 입력 성공")
    conn.commit()
    conn.close()


def selectData():
    strData1, strData2, strData3, strData4 = [], [], [], []
    conn = pymysql.connect(
        host="127.0.0.1", user="root", password="", db="hanbitDB", charset="utf8"
    )
    cur = conn.cursor()
    cur.execute("SELECT * FROM usertbl")
    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.append(row[0])
        strData2.append(row[1])
        strData3.append(row[2])
        strData4.append(row[3])

    listData1.delete(0, listData1.size() - 1)
    listData2.delete(0, listData2.size() - 1)
    listData3.delete(0, listData3.size() - 1)
    listData4.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()


## 메인 코드부
window = Tk()
window.geometry("600x300")
window.title("GUI 데이터 입력")

edtFrame = Frame(window)
edtFrame.pack()
listFrame = Frame(window)
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)
btnSelect = Button(edtFrame, text="조회", command=selectData)
btnSelect.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)

window.mainloop()

 

 

sqlalchemy  필요성?????????????
####sqlalchemy#####
from sqlalchemy import create_engine
from sqlalchemy import select, text
from sqlalchemy.engine.url import URL 
from sqlalchemy.orm import Session

#url form : dialect+driver://username:password@host:port/database
db_url = "mysql://root:""@localhost:3306/test" # dbms/local주소/db이름
engine = create_engine(db_url)
conn = engine.connect()

result = conn.execute(text("select * from sdf"))  ##테이블 이름
print(result.all())

import sys
sys.exit()

 

'회고' 카테고리의 다른 글

5/24-12일차 셀레니움  (0) 2024.05.24
5/23 11일차- 크롤링  (0) 2024.05.23
5/21 9일차 SQL  (0) 2024.05.22
SK네트웍스 Family AI 캠프 1기 2주차 회고  (0) 2024.05.20
PySimpleGUI auto-py-to-exe 설치하기  (0) 2024.05.16