티스토리 뷰
DataFrame.to_sql(name, con, flavor='sqlite', schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None)
import sqlite3
con = sqlite3.connect("C:\SQLite3\kospi.db")
cursor = con.cursor()
cursor.execute("CREATE TABLE kakao(Date text, Open int, High int, Low int, Closing int, Volume int)")
cursor.execute("INSERT INTO kakao VALUES('16.06.03', 97000,98600,96900,98000,321405)")
con.commit()
cursor.execute("SELECT * FROM kakao")
row = cursor.fetchone()
cursor.execute("SELECT * FROM kakao")
all_row = cursor.fetchall()
all_row[0][0]
con.close()
#-------------------pandas------------------
DataFrame.to_sql(name, con, flavor='sqlite', schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None)
name : 테이블명
con : cursor명
flavor = db종류 (sqlite, mysql)
schema = 스키마값 (none)
if_exists : ‘fail’, ‘replace’, ‘append’ 중 하나를 사용할 수 있는데 기본값은 ‘fail’이다.
‘fail’은 데이터베이스에 테이블이 존재하는 경우 아무 동작도 수행하지 않는다.
‘replace’는 테이블이 존재하면 기존 테이블을 삭제하고 새로 테이블을 생성한 후 데이터를 삽입한다.
‘append’는 테이블이 존재하면 데이터만을 추가한다.
index : DataFrame 의 인덱스를 DB컬럼으로 추가할지 여부 (True)
index_label : 인덱스 컬럼의 라벨 (None)
chunksize : 한번에 써지는 row 수, (None : 한번에 모든 라인을 씀)
dtype: 컬럼에 대한 SQL 타입을 딕셔너리로 넘겨줄 수 있다
패킷 사이즈 데이터에 제약이 있을 경우
df.to_sql('test', con, chunksize=1000)
#-----------------------------------------
con = sqlite3.connect("~~~")
df = pd.read_sql("SELECT * FROM kakao", con, index_col=None)
#인덱스 컬럼이 존재하면 직접 설정
df = pd.read_sql("SELECT * FROM kakao", con, index_col="index")
#---------------주가 읽어 DB에 저장---------------------------
import pandas as pd
import pandas_datareader.data as web
import datetime
import sqlite3
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2016, 6, 12)
df = web.DataReader("078930.KS", "yahoo", start, end)
con = sqlite3.connect("C:\SQLite3\kospi.db")
df.to_sql('078930', con, if_exists='replace')
readed_df = pd.read_sql("SELECT * FROM '078930'", con, index_col = 'Date')
#-------------- 배열 통 저장
import
sqlite3
conn
=
sqlite3.connect(
"test.db"
)
cur
=
conn.cursor()
data
=
(
(
'홍진우'
,
1
,
'서울'
),
(
'강지수'
,
2
,
'부산'
),
(
'김청진'
,
1
,
'서울'
),
)
sql
=
"insert into customer(name,category,region) values (?, ?, ?)"
cur.executemany(sql, data)
conn.commit()
conn.close()