[Python] 파이썬에서 오라클 DB 연동

hhs012·2022년 1월 3일
0

Python

목록 보기
1/2

1. cx_oracle 라이브러리 설치

2. 접속할 oracle DB 정보 확인 및 연결

import cx_Oracle as cx
conn = cx.connect("사용자이름","비밀번호","127.0.01:1521/XE") #DB연동

3. 데이터 불러오기(조회,R)

cur = conn.cursor()
cur.execute("select * from emp") #sql 쿼리 작성

for c in cur:
	print(c)
    
cur.close()
conn.close()

*데이터프레임으로 불러오기

import pandas as pd
df=pd.real_sql(" sql 구문 " , con = conn) #데이터프레임으로 불러오기
print(df)

삽입(C)

def my_insert(empno, ename=None, deptno=None):
    conn = cx.connect("사용자이름", "비밀번호", "127.0.01:1521/XE")  
    sql = """insert into emp(empno,ename,deptno)
             values(:1,:2,:3)""" ## 변수이름을 써도 되나, 보통 숫자로 쓴다.
             
    cur = conn.cursor()
    cur.execute(sql,[empno,ename,deptno]) #[값]
    cur.close()
    conn.commit()
    conn.close()
 #lec.my_insert("9999", 'AAA', 40)
 
def my_insert_many(emp_list):
    conn = cx.connect("사용자이름", "비밀번호", "127.0.01:1521/XE")  
    sql = """insert into emp(empno,ename,deptno)
             values(:1,:2,:3)""" #컬럼 3개

    cur = conn.cursor()
    cur.executemany(sql,emp_list) #[[]]
    cur.close()
    conn.commit()
    conn.close() 
# emp_list = [[551, 'ccc1', 10], [552, 'ccc2', 10],
#             [553, 'ccc3', 10], [554, 'ccc4', 10], [555, 'ccc5', 10]]           
# lec.my_insert_many(emp_list)

수정(U)

def my_update(deptno,empno):
    conn = cx.connect("사용자이름", "비밀번호", "127.0.01:1521/XE")  
    sql = """update  emp(empno,deptno)
             set sal=sal+1000, deptno=:1 where empno=:2"""

    cur = conn.cursor()
    cur.execute(sql,[deptno,empno]) #[값]
    cur.close()
    conn.commit()
    conn.close()
#lec.my_update(40,7902)

def my_update2(list):
    conn = cx.connect("사용자이름", "비밀번호", "127.0.01:1521/XE")  
    sql = """update  emp(empno,ename,deptno)
             set sal=sal+1000, deptno=:1 where empno=:2"""

    cur = conn.cursor()
    cur.executemany(sql,list) #[[]]
    cur.close()
    conn.commit()
    conn.close()
    
#list=[[50,2000]]
#lec.my_update2(list)

삭제(D)

#10번 부서 삭제
def my_delete(deptno):
    conn = cx.connect("", "", "127.0.01:1521/XE")  
    sql = """delete from emp
             where deptno=:1"""

    cur = conn.cursor()
    cur.execute(sql,[deptno]) # 리스트로 항상 써줘야 한다. (원래 하나 쓸 때는 , 썼었다.)
    cur.close()
    conn.commit()
    conn.close()
#lec.my_delete(10)    

# 7678,7499,7844 삭제
def my_delete2(empno1,empno2,emp3):
    conn = cx.connect("", "", "127.0.01:1521/XE")  #
    sql = """delete from emp
             where empno in (:1,:2,:3)"""

    cur = conn.cursor()
    cur.execute(sql,[empno1,empno2,emp3])   
    cur.close()
    conn.commit()
    conn.close()
#lec.my_delete2([7678,7499,7844])

def my_delete3(list2):
    conn = cx.connect("", "", "127.0.01:1521/XE") 
    sql = """delete from emp
             where empno =:1"""

    cur = conn.cursor()
    cur.executemany(sql,list2) #[[]]
    cur.close()
    conn.commit()
    conn.close()
# list2=[[7678],[7499],[7844]] 각각 리스트에 담기
# lec.my_delete3(list2)

0개의 댓글