0607 pandas(8)

So hee Jeon·2023년 6월 7일

pandas

목록 보기
1/6

엑셀 다루기

visual studio

python -m pip install cx_Oracle --upgrade

import cx_Oracle as oci

con = oci.connect("scott/tiger@localhost:1521/orcl")
cur = con.cursor()

#fetchone
#sql 실행

sql = "SELECT * FROM EMP"
cur.execute(sql)

while True:
    row = cur.fetchone() # fetchone으로 한줄씩 꺼내서 row로 저장
    if row is None: #row가 없으면 (None)
        break #(멈추고)
    print(row)

#sql 실행
sql = "SELECT * FROM EMP"
cur.execute(sql)
#
row = cur. fetchone()
#
while row is not None:
    print(": ".join([str(col) for col in row ])) #1
    row = cur. fetchone() #2

#1 문자열을 하나하나 담아서 join해주면 됨. 반복문 리스트를 쓸거야 row 안에서 여러 개의 열의 값을 가져온다, 열은 str으로 바꿔서
#2 row가 계속 반복되어야 하니까 또 적어줘

sql = "SELECT EMPNO, ENAME FROM EMP"
cur.execute(sql)
#
row = cur. fetchone()
#
while row is not None:
    empno, ename = row
    print(empno, ename)
    row = cur. fetchone() 

# sql 실행
sql = "SELECT EMPNO, ENAME FROM EMP"
cur.execute(sql)
#
while True:
    row = cur.fetchone()
    if row is None:
        break
    data1 = row[0]
    data2 = row[1]
    print("%5s %10s" % (data1, data2))

5자리의 string>> blank+ 4자리의 empno/10자리 뒤에서부터 채워져! (data1, data2)=> like format 함수

# fetchall
#sql 실행
sql = " SELECT * FROM EMP"
cur.execute(sql)
#
rows = cur.fetchall()
if rows:
    for row in rows: # rows 안에는 모든 결과가 있기 때문에 1줄씩 꺼내서 봐야해
        print(row)

fetchall 과 fetchone은 가져오는 방식이 달라

print 부분만 이렇게 바꾸면

print(": ".join([str(col) for col in row ]))

예쁘게 정렬~

sql = "SELECT EMPNO, ENAME FROM EMP"
cur.execute(sql)
#
rows = cur. fetchall()
if row:
    for row in rows:
        empno, ename = row
        print(empno, ename)

sql = "SELECT EMPNO, ENAME FROM EMP"
cur.execute(sql)
#
rows = cur.fetchall()
if rows:
    for row in rows:
        data1 = row[0]
        data2 = row[1]
        print("%5s %10s" % (data1, data2))

sql = "SELECT * FROM EMP A, SALGRADE B WHERE A.SAL BETWEEN B.LOSAL AND B.HISAL"
cur.execute(sql)
#
rows = cur.fetchall()
if rows:
    for row in rows:
        print(row)	

fetchmay (내가 정한 숫자만큼 반복)

sql = " SELECT * FROM EMP"
cur.execute(sql)
#
rows = cur.fetmany(5)
if rows:
    for row in rows: # rows 안에는 모든 결과가 있기 때문에 1줄씩 꺼내서 봐야해
        print(row)

pandas로 sql 다루기

import pandas as pd
sql = "SELECT * FROM EMP"
df = pd.read_sql_query(sql, con)
print(df)

create table

# sql 실행 - DDL(data definition language, 자동 커밋이 됨. sql만 실행시키면 됨)
sql = "CREATE TABLE EXAM_ID (ID INT)"
cur.execute(sql)
#
print(cur.execute("SELECT * FROM EXAM_ID").fetchall())

insert

while True:
    data1 = input("ID를 입력하세요(정수)> ")
    if data1 == "":
        break
    sql = "INSERT INTO EXAM_ID VALUES('" + data1 + "')"
    cur.execute(sql)

drop


sql = "DROP TABLE EXAM_ID VALUES('" + data1 + "')"
cur.execute(sql)
#
print(cur.execute("SELECT * FROM EXAM_ID").fetchall())

commit


con.commit() # con.=connection gml 같은 건 반드시 commit 

rollback

con.rollbakc()

디비 연결 종료


con.close()  # 모든 프로그램은 끝날 때 close 해줘야해
profile
!굉장나 엄청해!

0개의 댓글