728x90
함수 정의 (insert, update, delete)
import cx_Oracle as cx
# API = 패키지 --- 라이브러리
# conn = cx.connect("ai","0000","127.0.0.1:1521/XE")
# if bool(conn):
# print("연결성공")
# else:
# print("연결실패")
#
# cur = conn.cursor() #커서로 데이터 접근가능
# cur.execute("select * from emp") #emp 데이터 가져와라 (SQL문)
# for c in cur:
# print(c) #() 튜플 : 수정,삭제 불가
#
# cur.close() #커넥션 한번 열었으면 다시 닫아주기 연결 많아지면 오라클 서버 과부화
# conn.close()
#------------------------------------------------------------
#---------------------------------------------------------------
def my_select(ename=None): #줘도그만 안줘도그만 None
conn = cx.connect("ai", "0000", "127.0.0.1:1521/XE")
if bool(conn):
print("연결성공")
else:
print("연결실패")
cur = conn.cursor() # 커서로 데이터 접근가능
if bool(ename):
sql = f"select * from emp where ename='{ename}'" # emp 데이터 가져와라 (SQL문)
else:
sql = "select * from emp"
cur.execute(sql)
for c in cur: #커서는 한줄씩 가져옴(for문을 통해서 전체 출력가능)
print(c) # () 튜플 : 수정,삭제 불가
cur.close() # 커넥션,커서 한번 열었으면 다시 닫아주기 연결 많아지면 오라클 서버 과부화
conn.close()
#------------------------------호출---------------------
# my_select('KING')
# my_select()
def my_insert(empno, ename=None, deptno=None):
sql = """insert
into emp(empno, ename, deptno)
values(:empno, :ename , :deptno)"""
conn = cx.connect("ai", "0000", "127.0.0.1:1521/XE")
cur = conn.cursor() # 커서로 데이터 접근가능
cur.execute(sql,[empno, ename, deptno])
#cur.execute(sql,{"empno":empno, "ename":ename, "deptno":deptno})
conn.commit()
cur.close() # 커넥션,커서 한번 열었으면 다시 닫아주기 연결 많아지면 오라클 서버 과부화
conn.close()
def my_insert2(empno, ename=None, deptno=None): #추천
sql = """insert
into emp(empno, ename, deptno)
values(:1, :2 , :3)"""#바인딩값 숫자로 표시
conn = cx.connect("ai", "0000", "127.0.0.1:1521/XE")
cur = conn.cursor() # 커서로 데이터 접근가능
cur.execute(sql,[empno, ename, deptno])
#cur.execute(sql,{"empno":empno, "ename":ename, "deptno":deptno})
conn.commit()
cur.close() # 커넥션,커서 한번 열었으면 다시 닫아주기 연결 많아지면 오라클 서버 과부화
conn.close()
def my_insert_many(emp_list):
sql = """insert
into emp(empno, ename, deptno)
values(:1, :2 , :3)"""
conn = cx.connect("ai", "0000", "127.0.0.1:1521/XE")
cur = conn.cursor() # 커서로 데이터 접근가능
cur.executemany(sql, emp_list)
conn.commit()
cur.close() # 커넥션,커서 한번 열었으면 다시 닫아주기 연결 많아지면 오라클 서버 과부화
conn.close()
def my_update(deptno,empno): #추천
sql = """update emp
set sal=sal+1000, deptno=:1
where empno=:2"""#바인딩값 숫자로 표시
conn = cx.connect("ai", "0000", "127.0.0.1:1521/XE")
cur = conn.cursor() # 커서로 데이터 접근가능
cur.execute(sql,[deptno, empno])
cur.close() # 커넥션,커서 한번 열었으면 다시 닫아주기 연결 많아지면 오라클 서버 과부화
conn.commit()
conn.close()
def my_update3(list): #추천
sql = """update emp
set sal=sal+1000, deptno=:1
where empno=:2"""#바인딩값 숫자로 표시
conn = cx.connect("ai", "0000", "127.0.0.1:1521/XE")
cur = conn.cursor() # 커서로 데이터 접근가능
cur.executemany(sql,[list])
cur.close() # 커넥션,커서 한번 열었으면 다시 닫아주기 연결 많아지면 오라클 서버 과부화
conn.commit()
conn.close()
##오라클상에서 데이터핸들링을 할때 커밋을 반드시 해주어야 파이썬에서 작동된다
def my_delete(deptno): #추천
sql = """delete from emp
where deptno=:1"""#바인딩값 숫자로 표시
conn = cx.connect("ai", "0000", "127.0.0.1:1521/XE")
cur = conn.cursor() # 커서로 데이터 접근가능
cur.execute(sql,[deptno])
cur.close() # 커넥션,커서 한번 열었으면 다시 닫아주기 연결 많아지면 오라클 서버 과부화
conn.commit()
conn.close()
def my_delete2(empno1,empno2,empno3): #추천
sql = """delete from emp
where empno in (:1, :2, :3)"""#바인딩값 숫자로 표시
conn = cx.connect("ai", "0000", "127.0.0.1:1521/XE")
cur = conn.cursor() # 커서로 데이터 접근가능
cur.execute(sql,[empno1,empno2,empno3])
cur.close() # 커넥션,커서 한번 열었으면 다시 닫아주기 연결 많아지면 오라클 서버 과부화
conn.commit()
conn.close()
def my_delete3(list): #추천
sql = """delete from emp
where empno =:1"""#바인딩값 숫자로 표시
conn = cx.connect("ai", "0000", "127.0.0.1:1521/XE")
cur = conn.cursor() # 커서로 데이터 접근가능
cur.executemany(sql,list)
cur.close() # 커넥션,커서 한번 열었으면 다시 닫아주기 연결 많아지면 오라클 서버 과부화
conn.commit()
conn.close()
#---------------------------------------------------------------------
함수 Import
from pkg import oracle_test
#oracle_test.my_select()
#oracle_test.my_select('KING')
# emp_list=[[551,'ccc1',10],[552,'ccc2',10],[553,'ccc3',10]]
#
# oracle_test.my_insert_many(emp_list)
#oracle_test.my_insert2('7775','ddd',20)
#oracle_test.my_update(20,7902)
#list=[30,7369]
#oracle_test.my_update3((list))
#oracle_test.my_delete2(552,553,7777)
List=[[9999],[7776],[7775]]
oracle_test.my_delete3(List)
퀴즈
#module name : lec10_oracle_file.py
#file name :lec10_oracle_file.txt
import cx_Oracle as cx
#quiz1. txt파일의 데이터를 오라클 emp2 테이블에 입력해라
def my_insert(empno, ename=None, job=None, mgr=None, hiredate=None, sal=None,comm=None,deptno=None):
sql = """insert
into emp2(empno, ename, job, mgr, hiredate, sal, comm, deptno)
values(to_number(:1), :2 , :3, to_number(:4), to_date(:5,'yyyy-mm-dd'),
to_number(:6), to_number(:7), to_number(:8))"""
conn = cx.connect("ai", "0000", "127.0.0.1:1521/XE")
cur = conn.cursor() # 커서로 데이터 접근가능
cur.execute(sql,list2)
#cur.execute(sql,{"empno":empno, "ename":ename, "deptno":deptno})
conn.commit()
cur.close() # 커넥션,커서 한번 열었으면 다시 닫아주기 연결 많아지면 오라클 서버 과부화
conn.close()
with open('./lec10_oracle_file.txt','r') as f:
while True:
line1 = f.readline()
list2=line1.split("\t")
x=list2[-1]
x=x.replace('\n','')
list2[-1]=x
if len(line1)<=0:
break
my_insert(list2)
#quiz 2. dept 테이블 값을 읽어서 lec10_oracle_file.txt에 써라
def my_write(dept):
conn = cx.connect("ai", "0000", "127.0.0.1:1521/XE")
cur = conn.cursor() # 커서로 데이터 접근가능
sql = f"select * from {dept}" # emp 데이터 가져와라 (SQL문)
cur.execute(sql)
with open('./lec10_oracle_file.txt', 'a') as w:
for c in cur: # 커서는 한줄씩 가져옴(for문을 통해서 전체 출력가능)
for i in c:
w.write(str(i))
w.write(" ")
w.write("\n")
cur.close() # 커넥션,커서 한번 열었으면 다시 닫아주기 연결 많아지면 오라클 서버 과부화
conn.close()
my_write('dept')
-- excutemany excute 차이 복습
'Python > 데이터 분석' 카테고리의 다른 글
(데이터 분석)파이썬 - Pandas DataFrame, Numpy array (0) | 2022.01.05 |
---|---|
(데이터 분석) Pandas 가이드북 링크 (0) | 2022.01.05 |
(데이터 분석)파이썬- datetime (0) | 2022.01.04 |
(데이터 분석)파이썬 -오라클 가이드북 (0) | 2022.01.04 |
(데이터 분석) 파이썬 - 오라클 연동 (0) | 2021.12.31 |
댓글