TIL 20202-12-05

JYR00·2022년 12월 5일
0

TIL

목록 보기
44/60

비프로 일레븐
초록소프트
=> 스포츠와 IT 융합 스타트업

select문으로 데이터 가져오기
ch13 ex2

import pymysql
# pip install pymysql
# pip : python install package
# 리눅스 환경
# select 문 사용해서 데이터 출력하기

con, cur = None, None
data1, data2, data3, data4 = '','','',''
sql = ''
row = None

con = pymysql.connect(host='localhost', user = 'root', password = '1234', db='mydb', charset='utf8')
cur = con.cursor()

cur.execute('SELECT * FROM tblMember2')

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 %15s %5s' % (data1, data2, data3, data4))

con.close()




ch13 ex3


#ex3.py

import pymysql
from tkinter import *
from tkinter import messagebox

# 함수 선언

def insertData():
    con, cur = None, None
    data1, data2, data3, data4 = '', '', '', ''
    sql = ''

    con = pymysql.connect(host='localhost', user='root', password='1234', db='mydb', charset='utf8')
    cur = con.cursor() #커서를 통해 진행한다

    data1 = edt1.get(); data2 = edt2.get(); data3 = edt3.get(); data4 = edt4.get();

    #한줄 다 가져오려면 세미콜론 필요

    try :
        sql = "INSERT INTO tblMember2 VALUES ('" + data1 + "','" + data2 + "','" + data3 + "','" + data4 + "')"
        cur.execute(sql)
    except :
        messagebox.showinfo("데이터 입력 오류 발생")
    else :
        messagebox.showinfo("성공", '데이터 입력성공')
    con.commit()
    con.close()

def selectData():
    strData1,strData2,strData3,strData4 = [], [],[],[]
    con = pymysql.connect(host='localhost', user='root', password='1234', db='mydb', charset='utf8')
    cur = con.cursor()  # 커서를 통해 진행한다
    cur.execute('SELECT * FROM tblMember2')
    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);
    # zip 함수 : for문 병렬 처리
    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);
    con.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='pink')
listData1.pack(side=LEFT, fill=BOTH, expand=1)
listData2 = Listbox(listFrame, bg='pink')
listData2.pack(side=LEFT, fill=BOTH, expand=1)
listData3 = Listbox(listFrame, bg='pink')
listData3.pack(side=LEFT, fill=BOTH, expand=1)
listData4 = Listbox(listFrame, bg='pink')
listData4.pack(side=LEFT, fill=BOTH, expand=1)

window.mainloop()


크롤링

crawling new project 생성

https://rt.molit.go.kr/

chat

# csv/ex1.py

import os, re
import usecsv as us

# 둘 중 어느 거 써도 다 출력됨
os.chdir(r'C:\Python\crawling\csv\data')
# os.chdir(r'.\data')

total = us.opencsv('popSeoul.csv')
# for i in total[:5]:
#     # 5개만 출력되도록
#     print(i)
# csv/usecsv.py
import csv,os,re

# 파일오픈 함수
def opencsv(filename):
    f = open(filename, 'r')
    reader = csv.reader(f)
    output=[]
    for i in reader :
        output.append(i)

    return output

# 파일쓰기 함수
def writecsv(filename, the_list):
    # 파일 읽을 때 사용
    with open(filename, 'w', newline='')as f:
        a = csv.writer(f,delimiter=',')
        a.writerow(the_list)


# 문자 리스트 -> 실수 리스트 변환
# a = [['1','2','3'],['2','3',5']]
# b = switch(a)
# b = [[1.0,2.0,3.0],[2.0,3.0,5.0]]
def switch(listName):
    for i in listName:
        for j in i:
            try :
                i[i.index(j)] = float(re.sub(',','',j))
            except :
                pass
    return listName

# csv/ex1.py

import os, re
import usecsv as us

# 둘 중 어느 거 써도 다 출력됨
os.chdir(r'C:\Python\crawling\csv\data')
# os.chdir(r'.\data')

total = us.opencsv('popSeoul.csv')
# for i in total[:5]:
#     # 5개만 출력되도록
#     print(i)

newPop = us.switch(total)
for i in newPop[:5]:
    foreign = 0
    try:
        foreign = round(i[2]/(i[1] + i[2]) * 100, 1)
        print(i[0], foreign)
    except :
        pass

new = [['구', '한국인', '외국인', '외국인 비율(%)']]
for i in newPop:
    foreign = 0
    try:
        foreign = round(i[2] / (i[1] + i[2]) * 100, 1)
        if foreign > 3 :
            new.append([i[0],i[1],i[2],foreign])
    #         3을 넘기는 값만 출력하라
    except:
        pass
us.writecsv('nowPop.csv', new)


파일생성됨

파이썬 -> 넘파이(numpy), 판다스, 맷플풋립

파이썬(빅데이터 라이브러리) 공부순서


1. Numpy
2. pandas
3. matplotlib(graph)


# pip install beautifulsoup4

from urllib.request import urlopen
from bs4 import BeautifulSoup

html = urlopen('http://www.naver.com')
obj = BeautifulSoup(html,'html.parser')

print(obj)



















0개의 댓글