비프로 일레븐
초록소프트
=> 스포츠와 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()
#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 생성
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), 판다스, 맷플풋립
# 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)