pip, 예외처리, 파일열기

2021. 7. 13. 01:05python/파이썬

728x90

# python 프로그램으로 MySQL DBMS에 접속해서 원하는 Database에서
# Data를 가져와 보아요!

 

pip 설치


# 1. 어떤 Module을 사용할지를 결정. => pymysql 이라는 module을 사용.
# 2. 해당 module을 download해서 설치해야 해요!
#    => pip 라는 module을 이용할 수 있어요!(python의 필수, 기본 module)
*pip : 파이썬 내장 필수 모듈 - 다른 모듈 설치를 도와주는 모듈

#    => anaconda 환경이라면 anaconda의 기능을 이용해서 module을 다운로드 , 설치.
#       anaconda명령으로 만약 module이 설치가 안된다면 pip로 설치.
# 3. pymysql 설치
#    => anaconda prompt를 실행한 후 conda install 명령으로 package를 설치
*package - 모듈를 폴더의 계층구조로 관리
#    => jupyter notebook에서도 다운로드 및 설치를 할 수 있어요!
아나콘다 프로프트에 conda install 모듈명(pymysql)


#conda install pymysql  # anaconda 환경인경우 
주피터노트북 앞에 !를 붙이면 아나콘다프롬프트에 띄우는 효과
#!pip install pymysql    # 일반 python 환경일 경우(Colab은 웬만한건 다 깔려있다)

모듈은 네트워크 어디에 아나콘다 레퍼지토리 최신버전의 라이브러리 패키지를 올렸다
만약 없다면 pip를 이용해서 진행

 

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

 

# 필요한 module import

1.

import pymysql 

 

2.
# 데이터베이스 connection이 필요!
# 내가 사용하려는 Database에 대한 논리적인 연결 객체가 필요.
# 논리적인 연결 객체 - 확인하고 연결할수 있어 , 정말있어 , 데이터를 가져올수있는것!

# 당연히 접속에 대한 정보를 인자로 넘겨줘야 해요!
conn = pymysql.connect(host='localhost',
                       db='library',
                       user='python',
                       password='python',
                       charset='utf8')
# host = 어디에 있니? 같은 컴퓨터면 localhost, 그것이 아니면 ip

 

3.
# 접속이 성공하면 instance가 생성되고 그렇지 않으면 None이 들어와요!
print(conn)

# 접속이 성공하면 해당 instance를 이용해서 Query를 실행할 수 있어요!
# cursor 객체를 생성해야 해요!  = sql 실행의 주체,  sql접속후 결과를 받아온다 !
#cursor = conn.cursor()  # 이렇게 만들면 나중에 결과데이터가 tuple로 나와요!
cursor = conn.cursor(pymysql.cursors.DictCursor)

 

4.
# SQL구문을 만들어야 해요!
sql = 'SELECT btitle, bauthor, bprice FROM book WHERE bprice > 50000;'

 

5.
# 생성한 SQL 문장을 cursor를 통해서 실행시켜요!
cursor.execute(sql)

 

6.
# fetch(땡긴다) 계열의 함수를 이용해서 결과를 cursor로 부터 가져와요!
result = cursor.fetchall()

# print(result)

for bookDict in result:
    print('제목 : {}, 저자 : {}'.format(bookDict['btitle'],bookDict['bauthor']))

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

 

 

# 키워드를 입력받아서 해당 키워드를 책 제목에 포함하는 책을 검색한 후
# 책의 제목과 저자를 출력하세요!
import pymysql       # 매번 import를 할 필요는 없어요!

conn = pymysql.connect(host='localhost',
                       db='library',
                       user='python',
                       password='python',
                       charset='utf8')

cursor = conn.cursor(pymysql.cursors.DictCursor)

search_keyword = input("검색키워드 : ")

sql = "SELECT btitle, bauthor FROM book WHERE btitle LIKE '%{}%' ".format(search_keyword)

# 패턴매칭, 와일드카드 문자 %는 0개 이상의 문자를 의미해요!  ,   ?는 1개이상 문자

cursor.execute(sql)

result = cursor.fetchall()

for bookDict in result:
    print('제목 : {}, 저자 : {}'.format(bookDict['btitle'],bookDict['bauthor']))

 

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

 

 

# python의 Exception Handling (예외처리)

# 일반적으로 programming언어에서 Error, Exception
# Error : 복구가 불가능한 예외적인 상황   => 프로그램의 실행이 중단
# Exception : 복구가 가능한 예외적인 상황 => 프로그램의 실행이 중단되지 않고 
#                                          지속적인 수행이 가능

try:
    my_list = ['1', '2']
    my_sum = 100 + int(my_list[0])
    
except ZeroDivisionError:
    # 예외처리코드 - 오류를 극복해서 프로그램이 강제종료되지 않도록 처리
    print('0으로 나눌수 없어요!')
except IndexError:
    print('index 사용에 문제가 있어요!')
except:
    print('예기치 않은 문제가 있어요!')
finally:
    print('오류의 여부와 상관없이 무조건 실행') 
    

print('Hello World')

# 오류가 생길만한 코드에 우리가 임의로 try구문을 이용해서 예외처리를
# 하면되나요??

# 일반적으로 try구문이 강제되는 코드들이 있어요!

 

 

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

 

 

 

# python의 파일처리
# 실제로 python의 순수 파일처리 기능은 사용하지 않아요!
# 너무 느려요!, 대용량을 처리하기에 적합하지 않아요!

#파이썬 모듈중 pandas 모듈이 있는데 이놈이 파일처리한다 !! 
#pandas는 파이썬의 대표적인 모듈 그만큼 기능과 성능에서 효과가 있고 거의 모든 파이썬 파일처리는 pandas가 처리


# python 모듈 중 pandas 모듈이 있는데 이놈을 이용해서 file처리를 해요!

# 그래도 예제하나는 보고 넘어가요!

file1 = open('my_student.txt','r')  # r = read , w = write
file1 = open('my_student.txt', 'r', encoding = 'utf-8')

while True:
    line = file1.readline()  # 1 line을 읽어와요!
    print(line)
    if not line:
        break
        
file1.close()        

'python > 파이썬' 카테고리의 다른 글

tuple, dic 의 정리 및 활용  (0) 2021.07.30
파이썬 단어  (0) 2021.07.26
class 02, 일급함수, modul 뜻  (0) 2021.07.07
객체지향적 프로그래밍, class  (0) 2021.07.02
반복문, 함수,람다  (0) 2021.07.01