class Person :
def __init__(self,name,age=10):
self.name=name
self.age=age
def show(self):
print(self.name,'/',self.age)
def __str__(self):
return "Person %s %s" % (self.name,self.age)
class Employee(Person):
def __init__(self,name,age,level,pay):
super().__init__(name, age)
self.level=level
self.pay=pay
def __str__(self):
return super().__str__()+" Employee %s %d" % (self.level,self.pay)
p1 = Person('수지',30)
p1.show()
print('p1:',p1)
print(p1.name)
print(p1.age)
p2 = Person('박보검')
p2.show()
print('p2:',p2)
print('-------------------')
e1 = Employee('윤아',20,'대리',200)
e2 = Employee('정국',40,'대리',300)
print('e1:',e1)
print('e2:',e2)
class Tiger:
def jump(self):
print('호랑이 jump')
def cry(self):
print('호랑이 어흥')
class Lion:
def bite(self):
print('사자 bite')
def cry(self):
print('사자 으르렁')
class Liger(Tiger,Lion): #파이썬에서는 상속의 상속뿐 아니라 다중상속도 된다.
def play(self):
print('라이거와 놀기')
l= Liger()
l.play()
l.jump()
l.bite()
l.cry() #먼저 상속받은 쪽의 메소드를 사용한다. Tiger.cry() 사용
# 연산자 오버로딩
class NumBox:
def __init__(self,num):
self.num=num
self.num2=num
def __add__(self,num):
self.num +=num
return '더하기(add):'+str(self.num)
def __radd__(self,num):
self.num += num
return '더하기(radd):'+str(self.num)
def __sub__(self,num):
self.num -= num
return '빼기(sub):'+str(self.num)
num=NumBox(40)
print(num.num)
print(num.num+50)
print(num+50) #참조변수 + 숫자
#__add__ 함수로 작동함
print(num.num)
print(num.num2)
print(10 + num.num)
print(10 + num) #숫자 + 참조변수
#__radd__ 함수로 작동함
print(num.num-3)
print(num-3)
#__sub__ 함수로 작동함
예외처리
# java 에서는
# try
# catch
# catch
# catch
# finally
x = 10
y = 5
L =[1,2,3]
try:
print(x/y) #여기서 잡히면
print('예외처리') #여기는 안닿는다.
print(L[3]) #IndexError
except ZeroDivisionError as err:
print('ZeroDivisionError 발생:',err) #err=division by zero
except IndexError as err:
print('IndexError 발생:',err) #err=list index out of range
else :
print('else') #에러가 발생하지 않으면 else로 온다.
finally:
print('finally 영역')
print('Hi')
try :
a = int(input('숫자1: '))
b = int(input('숫자2: '))
except ValueError :
print('값이 적절하지 않습니다.')
else:
print(a,'+',b,'=',a+b)
print('----------------------')
try:
f=open('test.txt','r')
except FileNotFoundError :
print('파일 발견 못함')
else :
print(f.read())
f.close()
print('----------------------')
try :
a = int(input('숫자1: '))
b = int(input('숫자2: '))
if a<0 or b<0 :
raise ArithmeticError('음수 입력됨')
else :
print('두 수 모두 양수 입력됨')
except ArithmeticError as err:
print('예외 발생 :',err)
#제목 예외처리 가격 예외처리 while문 dict 형식
book={}
while True :
while True:
try :
title = input('제목 입력(3~5자)')
if len(title)<3 or len(title)>5:
raise NameError('제목은 3~5글자로 입력하세요')
except NameError as err :
print(err)
else :
break
while True:
try :
price=int(input('가격입력:'))
except ValueError :
print('가격은 숫자로 입력하세요.')
continue
else :
book[title]=price
break
conti=input('계속?')
if conti.lower() == 'n':
break
print('book:',book)
python db 사용법
window-preferences-PyDev-Interpreter-Python Intepreter- Manage witg pip- install cx_Oracle
# java
# jar
# 드라이버 로드
# 계정 접속
# sql 작성,분석
# 실행
# close
import cx_Oracle # 따로 설치해줘야한다.
con =cx_Oracle.connect('sqlid/sqlpw@localhost:1521/orcl') # 연결된 정보를 객체에 담음
cur =con.cursor() #실행한 결과를 담는 저장소
print(type(cur))
try :
drop = 'drop table person'
cur.execute(drop) # 실행 한번만 해줘야한다. 테이블이 없으면 에러남.
except cx_Oracle.DatabaseError :
print('테이블이 존재하지 않습니다.')
#cx_Oracle.DatabaseError: ORA-02289: 시퀀스가 존재하지 않습니다.
try :
dropseq = 'drop sequence perseq'
cur.execute(dropseq)
except cx_Oracle.DatabaseError :
print('시퀀스가 존재하지 않습니다.')
seq='create sequence perseq'
cur.execute(seq)
create = '''
create table person(
num number primary key,
id varchar2(10),
name varchar2(10),
addr varchar2(10)
)
'''
cur.execute(create)
cur.execute('select * from person')
for row in cur:
print(row)
insert ="insert into person values(perseq.nextval,'kim','연아','부산')"
cur.execute(insert)
insert ="insert into person values(perseq.nextval,'song','중기','제주')"
cur.execute(insert)
insert ="insert into person values(perseq.nextval,'park','세리','인천')"
cur.execute(insert)
insert ="insert into person values(perseq.nextval,'hong','길동','원주')"
cur.execute(insert)
con.commit() # commit을 따로 해줘야 한다. con객체에 연결되어 있기때문에 con.commit().
cur.execute('select * from person')
for row in cur:
print(row)
#(1, 'kim', '연아', '부산')
#(2, 'song', '중기', '제주')
update="update person set name='제니' where id='kim'"
cur.execute(update)
con.commit()
print('----------------')
cur.execute('select * from person')
for row in cur:
print(row)
print('----------------')
delete ="delete person where id='song'"
cur.execute(delete)
con.commit()
cur.execute('select * from person')
for row in cur:
print(row)
cur.close()
con.close() #둘이 따로 끊는다.
import cx_Oracle # 따로 설치해줘야한다.
con =cx_Oracle.connect('sqlid/sqlpw@localhost:1521/orcl') # 연결된 정보를 객체에 담음
cur =con.cursor() #실행한 결과를 담는 저장소
drop = 'drop table employee'
cur.execute(drop)
dropseq = 'drop sequence emplseq'
cur.execute(dropseq)
seq='create sequence emplseq'
cur.execute(seq)
create = '''
create table employee(
num number primary key,
id varchar2(10),
part varchar2(10),
position varchar2(10),
salary number
)
'''
cur.execute(create)
while True :
id=input('id 입력:')
while True :
try :
part = input('part 입력:')
if len(part) >3 :
raise NameError('part 글자수 초과 최대 3글자')
except NameError as err :
print(err)
else :
break
while True :
try :
position=input('position 입력:')
if len(position) >3 :
raise NameError('position 글자수 초과 최대 3글자')
except NameError as err :
print(err)
else :
break
while True :
try :
salary = int(input('salary 입력:'))
except ValueError:
print('salary는 숫자로 입력하세요.')
else :
break
insert = "insert into employee values(emplseq.nextval,'"+id+"','"+part+"','"+position+"','"+str(salary)+"')"
print(type(insert))
cur.execute(insert)
con.commit()
end = input('계속? :')
if end.lower()=='y' :
continue
elif end.lower()=='n' :
break
cur.execute('select * from employee')
print('select * from employee 검색 결과')
for row in cur:
print(row)
print('프로그램 종료')
cur.close()
con.close()
import cx_Oracle # 따로 설치해줘야한다.
con =cx_Oracle.connect('sqlid/sqlpw@localhost:1521/orcl') # 연결된 정보를 객체에 담음
cur =con.cursor() #실행한 결과를 담는 저장소
select= 'select p.id,p.name,e.part,e.position from person p inner join employee e on p.id=e.id'
#'select p.id,p.name,e.part,e.position from person p,employee e where p.id=e.id' natural join
cur.execute(select)
print('결과')
for row in cur:
print(row)
cur.close()
con.close()
'Develop > Python' 카테고리의 다른 글
1012 Python pandas DataFrame (0) | 2022.10.13 |
---|---|
1011 Python Numpy,pandas(맛보기) (1) | 2022.10.13 |
1006 Python 파일 입출력,클래스 (0) | 2022.10.06 |
1005 Python list 이어서,튜플,사전,함수,모듈 (1) | 2022.10.06 |
1004 Python Start For문,If문,list (0) | 2022.10.06 |