실행전 파이썬DB cx_Oracle 설치를 해야한다.
설치방법!
command to execute에 내용을 install cx_Oracle 이라고 변경하고 run을 누른다.
run을 누르고 아래와같이 뜨면 close한다.
close를 누르면 이 창이 다시 뜨는데, python을 클릭하면 loading이 되었다가 스크롤을 내려보면 cx_oracle이 설치 되어있음을 확인할 수 있다.
되고 cx_Oracle이 있는지 확인하면 apply close한다
📌 명령 프롬프트에서 설치하는 방법도 있다!
명령프롬프트에서
c:\Users\admin>pip install cx_Oracle
라고 입력하여서 설치할 수 있다.
명령프롬프트(cmd)에서 설치하는것이 정확하다고 할 수 있다
💻 11_DB
💾 Ex01
#_*_coding:utf-8
'''
Created on 2022. 10. 7.
@author: admin
'''
#jar
#드라이버 로드
#계정에 접속
#sql문 작성, 분석
#실행
#접속 종료
#파이썬에서 하는 방법
#
import cx_Oracle #파이썬에서 만든 모듈을 가져온다
con = cx_Oracle.connect("jspid/jsppw@localhost:1521/orcl") #계정접속
cur = con.cursor()
#저장소의 이름을 cur 라고 한다.
print(type(cur)) #<class 'cx_Oracle.Cursor'>
#테이블 삭제
drop = 'drop table person'
cur.execute(drop)
#참조변수 cur 로 drop있는것을 실행하라
#테이블이 없으면 에러가 발생
#시퀀스 삭제
dropseq = 'drop sequence perseq'
cur.execute(dropseq)
#시퀀스 생성
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)
#입력 insert
cur.execute('select * from person')
for row in cur:
#cur가 반복대상 -select한 결과가 cur 에 담긴다.
print(row) #row가 한줄한줄 출력된다
insert = "insert into person values(perseq.nextval,'kim','연아','부산')"
cur.execute(insert)
insert = "insert into person values(perseq.nextval,'song','중기','제주')"
cur.execute(insert)
con.commit() #커밋, 커밋을 안하면 콘솔창에는 보여지지만, 오라클에서 조회할때는 레코드 조회가 되지 않는다.
cur.execute('select * from person')
for row in cur:
print(row)
#수정
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)
#삭제
delete = "delete person where id='song'"
cur.execute(delete)
con.commit()
print('------------------------')
cur.execute('select * from person')
for row in cur:
print(row)
cur.close() #더이상 할일이 없으면 커서를 닫는다
con.close() #더이상 할일이 없으면 접속을 종료한다.
#콘솔에 결과가 튜플로 나온다. (튜플은 변경 불가, 리스트는 변경가능)
✔ 자바에서 DB 실행하는 방법
jar
드라이버 로드
계정에 접속
sql문 작성, 분석
실행
접속 종료
✔ 파이썬에서 하는 방법
import cx_Oracle - 파이썬에서 만든 모듈을 가져온다
con = cx_Oracle.connect("jspid/jsppw@localhost:1521/orcl") -계정접속
cur = con.cursor()
#저장소의 이름을 cur 라고 한다.
print(type(cur)) - <class 'cx_Oracle.Cursor'>
#테이블 삭제
drop = 'drop table person'
cur.execute(drop)
#참조변수 cur 로 drop있는것을 실행하라
#테이블이 없으면 에러가 발생
#시퀀스 삭제
dropseq = 'drop sequence perseq'
cur.execute(dropseq)
#시퀀스 생성
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)
#입력 insert
cur.execute('select * from person')
for row in cur:
#cur가 반복대상 -select한 결과가 cur 에 담긴다.
print(row) #row가 한줄한줄 출력된다
insert = "insert into person values(perseq.nextval,'kim','연아','부산')"
cur.execute(insert)
insert = "insert into person values(perseq.nextval,'song','중기','제주')"
cur.execute(insert)
con.commit() #커밋, 커밋을 안하면 콘솔창에는 보여지지만, 오라클에서 조회할때는 레코드 조회가 되지 않는다.
cur.execute('select * from person')
for row in cur:
print(row)
#수정
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)
#삭제
delete = "delete person where id='song'"
cur.execute(delete)
con.commit()
print('------------------------')
cur.execute('select * from person')
for row in cur:
print(row)
cur.close() #더이상 할일이 없으면 커서를 닫는다
con.close() #더이상 할일이 없으면 접속을 종료한다.
#콘솔에 결과가 튜플로 나온다. (튜플은 변경 불가, 리스트는 변경가능)
💾 Ex02
#_*_coding:utf-8
'''
Created on 2022. 10. 7.
@author: admin
'''
#시퀀스 테이블 생성
'''
emplseq
SQL> desc employee;
이름 널? 유형
----------------------------------------- -------- ----------------------------
NUM NOT NULL NUMBER
ID VARCHAR2(10)
PART VARCHAR2(10)
POSITION VARCHAR2(10)
SALARY
NUMBER
id입력:kim
part입력:영업부
position입력:과장
salary입력:aa
salary는 숫자로 입력하세요
salary입력:1000
계속?y
id입력:park
part입력:홍보부
position입력:대리
salary입력:2000
계속?n
select * from employee 결과
(1, 'kim', '영업부', '과장', 1000)
(2, 'park', '홍보부', '대리', 2000)
'''
import cx_Oracle
con = cx_Oracle.connect("jspid/jsppw@localhost:1521/orcl")
cur = con.cursor()
print(type(cur))
#테이블 삭제
drop = 'drop table employee'
cur.execute(drop)
#시퀀스 삭제
dropseq = 'drop sequence empseq'
cur.execute(dropseq)
#시퀀스 생성
seq = 'create sequence empseq'
cur.execute(seq)
#테이블 생성
create = ''' create table employee(
num number primary key,
id varchar2(20),
part varchar2(20),
position varchar2(20),
salary number
)
'''
cur.execute(create)
print('------------------------')
#입력하기 , 반복문 돌리면서 예외처리도 해줘야 한다
while True :
id = input('id입력:')
part = input('part입력:')
position = input('position입력:')
while True:
try :
salary = int(input('salary입력:'))
except ValueError :
print('salary는 숫자로 입력하세요')
continue
else :
break
insert = "insert into employee values(empseq.nextval,'"+id+"','"+part+"','"+position+"','"+str(salary)+"')"
cur.execute(insert)
con.commit()
yesno = input('계속?')
if yesno == 'n' :
break
cur.execute('select * from employee')
print('select * from employee 결과')
for row in cur:
print(row)
#시퀀스 테이블 생성 후 입력받아서 출력해보기
시퀀스 : emplseq
SQL> desc employee;
이름 널? 유형
----------------------------------------- -------- ----------------------------
NUM NOT NULL NUMBER
ID VARCHAR2(10)
PART VARCHAR2(10)
POSITION VARCHAR2(10)
SALARY
NUMBER
id입력:kim
part입력:영업부
position입력:과장
salary입력:aa
salary는 숫자로 입력하세요
salary입력:1000
계속?y
id입력:park
part입력:홍보부
position입력:대리
salary입력:2000
계속?n
select * from employee 결과
(1, 'kim', '영업부', '과장', 1000)
(2, 'park', '홍보부', '대리', 2000)
import cx_Oracle - 모듈을 가져온다
con = cx_Oracle.connect("jspid/jsppw@localhost:1521/orcl") - 계정접속
cur = con.cursor()
print(type(cur))
#테이블 삭제
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(20),
part varchar2(20),
position varchar2(20),
salary number
)
'''
cur.execute(create)
print('------------------------')
#입력하기 , 반복문 돌리면서 예외처리도 해줘야 한다
while True :
id = input('id입력:')
part = input('part입력:')
position = input('position입력:')
while True:
try :
salary = int(input('salary입력:'))
except ValueError :
print('salary는 숫자로 입력하세요')
continue
else :
break
insert = "insert into employee values(emplseq.nextval,'"+id+"','"+part+"','"+position+"','"+str(salary)+"')"
cur.execute(insert)
con.commit()
yesno = input('계속?')
if yesno == 'n' :
break
cur.execute('select * from employee')
print('select * from employee 결과')
for row in cur:
print(row)
'BACK END > Python' 카테고리의 다른 글
5일(10.11) numpy 배열 (0) | 2022.10.11 |
---|---|
5일(10.11) 예외처리과제풀이, DB예외처리 (0) | 2022.10.11 |
4일(10.07) 예외처리 (0) | 2022.10.07 |
4일(10.07) 파일입출력 과제풀이, 클래스 (0) | 2022.10.07 |
3일(10.06) 사전(dict)과제풀이, 파일 입출력, 클래스 (0) | 2022.10.06 |