c.execute("create table dessert(id integer, name char, kal integer)")
# 테이블안에값넣기
c.execute("insert into dessert(id,name,kal) values(1,'케이크',324)")
# 메모리에 테이블값을 올리기
# (!! 주의 !!) 메모리에올린테이블값은출력해도남아있으므로값이계속쌓인다.
c.execute("select * from dessert")
# 메모리에 올린값 한 개 보기(휘발성)
#한번패치하면메모리에서사라진다.
c.fetchone()
# 커서를먼저닫고
c.close()
# conn를닫는다.
conn.close()
# 메모리에 DB연결 / sql문 작성 영역 생성 / 테이블 생성 conn = sqlite3.connect(":memory:") c = conn.cursor() c.execute("create table dessert(id integer, name char, kal integer)")
# 테이블 안에값넣기 c.execute("insert into dessert(id,name,kal) values(1,'케이크',324)") c.execute("insert into dessert(id,name,kal) values(2,'초콜릿',545)")
# 영구히 저장하려면 conn을 기반으로 commit, rollback
# 트랜잭션이발생되었기때문에메모리에올리기전에rollback / commit가능
conn.rollback()# 작업 취소
# 테이블 안에값넣기
c.execute("insert into dessert(id,name,kal) values(1,'케이크',324)") c.execute("insert into dessert(id,name,kal) values(2,'초콜릿',545)")
conn.commit() # 작업 완료
# 메모리에테이블값을올리기
c.execute("select * from dessert")
# 메모리에 올린값 전부 보기(휘발성)
c.fetchall()
# 커서를먼저닫고conn를닫는다.
c.close()
conn.close()
2. 데이터 영구 보존
# 커서와 conn를 닫으면 기존 테이블이 사라지기 때문에 다시 불러올 수 없다. conn = sqlite3.connect(":memory:") c = conn.cursor() c.execute("select * from dessert") c.close() conn.close()
# 메모리로 열지 않고 지정한 경로에데이터파일로 생성 conn = sqlite3.connect("C:/data/food.db") c = conn.cursor() c.execute("create table dessert(id integer, name char, kal integer)") c.execute("insert into dessert(id,name,kal) values(1,'케이크',324)") c.execute("insert into dessert(id,name,kal) values(2,'초콜릿',545)") conn.commit() c.execute("select * from dessert") c.fetchall() c.close() conn.close()
# 저장된 DB파일에 연결 conn = sqlite3.connect("C:/data/food.db") c = conn.cursor()
# 영구히 저장되었으므로 DB안의 테이블을 바로 불러올 수 있다. c.execute("select * from dessert") c.fetchall()
# DB안에 있는 테이블 확인 c.execute("select name from sqlite_master where type='table'") c.fetchall()
# 테이블 구조 확인 c.execute("PRAGMA table_info(dessert)") c.fetchall()
# 테이블삭제 c.execute("drop tabledessert") c.execute("select name from sqlite_master where type='table'") c.fetchall() c.close() conn.close()
3. 저장
#저장된 DB파일에 연결 conn = sqlite3.connect("C:/data/food.db") c = conn.cursor()
# DB에 저장할 csv파일불러오기 # 첫번째 행에 헤더가 있어야한다. data = pd.read_csv("C:/data/dessert.csv")
# 데이터프레임(csv파일)을 DB에 저장할때dessert라는 이름으로 저장 data.to_sql('dessert',conn,index=False)
# 테이블 구조 및 정보 확인 c.execute("select name from sqlite_master where type='table'") c.fetchall() c.execute("PRAGMA table_info(dessert)") c.fetchall() c.execute("select * from dessert") c.fetchall() c.close() conn.close()
conn = sqlite3.connect("C:/data/food.db") c = conn.cursor()
drink = DataFrame({'id':[1,2,3], 'name' : ['콜라','사이다','커피'], 'kcal': [37,44,1]}) # 직접만든 데이터 프레임을 저장 할 수도 있다. drink.to_sql('drink',conn,index=False)
c.execute("select name from sqlite_master where type='table'") c.fetchall() c.execute("PRAGMA table_info(drink)") c.fetchall() c.execute("select * from drink") c.fetchall() c.close() conn.close()
conn = sqlite3.connect("C:/data/food.db") c = conn.cursor()
# sqllite에서 pandas로 읽어들이는 작업 # DB에 있는 테이블을 pandas에서 사용하기 drink = pd.read_sql_query("select * from drink",conn) drink