파이썬의 sqlite3에서 sql을 사용하여 데이터베이스에서 데이터를 열별로 꺼내는 함수를 만들어 보았다 [sqlite3 , sql ,pandas]
동기 부여
평상시 기계 학습계만 독학하고 있습니다만, twitter등에서는 sql의 지식도 필요라고 말해지는 분을 자주(잘) 봅니다. 그래서 조금씩 병행해서 배우자는 것으로, 처음에는 데이터를 꺼내는 곳에서 함수화해 가고 싶습니다.
이 기사에서는 다음을 수행합니다.
이미 있다면 죄송합니다.
SQL은 완전 초보자이므로 많이 보아라 (-_-;)
이번에 사용하는 것의 import
import sqlite3
import pandas as pd
import pandas.io.sql as sql
DB 만들기
pandas를 사용하여 시험용 DB를 만듭니다.
만드는 dataframe은 다음과 같이하고 싶습니다. 값은 적당합니다.
city = ["tokyo","kyoto","oosaka"]
num = [30,20,28]
df_1 = pd.DataFrame({"city":city,"number_of_city":num})
dataframe -> database로
path = "tamesi.db"
conn = sqlite3.connect(path)
cur = conn.cursor()
sql.to_sql(df_1,"study",conn,if_exists="replace",index=None)
cur.close()
con.close()
이번에는 tamesi라는 데이터베이스에 study라는 테이블로 만들었습니다.
지정된 열을 추출하는 함수 만들기
만들었습니다.
def ret_column(db,table,column=""):
assert bool(column), "no column is spcified"
conn= sqlite3.connect(db)
cur = conn.cursor()
cur.execute("select {} from {}".format(column,table))
val = cur.fetchall()
cur.close()
conn.close()
return val
column에 꺼내고 싶은 것을 넣어 꺼냅니다. 일단 열에 아무것도 없으면 오류를 반환하려고했습니다.
하는 것은 단순히 db와 table을 지정하고 sql 문을 호출하는 것입니다.
모든 데이터를 검색하는 함수 만들기
모처럼 왜 전체 데이터를 꺼내는 함수를 작성해 보겠습니다.
만들었습니다.
def ret_all(db,table):
conn = sqlite3.connect(db)
cur = conn.cursor()
cur.execute("select * from {}".format(table))
val = cur.fetchall()
cur.close()
conn.close()
return val
칼럼 지정이 없기 때문에 이쪽이 간단했습니다.
사용해보기
path = "tamesi.db"
table="study"
val_1 = ret_column(path,table,column="city")
val_2 = ret_all(path,table)
print(val_1)
print(val_2)
#以下出力
[('tokyo',), ('kyoto',), ('oosaka',)]
[('tokyo', 30), ('kyoto', 20), ('oosaka', 28)]
제대로 꺼낼 수 있는 것을 확인할 수 있었습니다.
드디어 인스턴스화해보자
간단하게 class로 구현해 보았습니다.
class ret_from_db():
def __init__(self,db):
self.db = db
def ret_column(self,table,column=""):
assert bool(column), "no column is spcified"
conn= sqlite3.connect(self.db)
cur = conn.cursor()
cur.execute("select {} from {}".format(column,table))
val = cur.fetchall()
cur.close()
conn.close()
return val
def ret_all(self,table):
conn = sqlite3.connect(self.db)
cur = conn.cursor()
cur.execute("select * from {}".format(table))
val = cur.fetchall()
cur.close()
conn.close()
return val
위 두 개를 붙였을 뿐입니다, 특필은 없음.
사용해 보았습니다.
get_db = ret_from_db(db="tamesi.db")
val_1 = get_db.ret_column(table="study",column="city")
val_2 = get_db.ret_all(table="study")
print(val_1)
print(val_2)
#以下出力
[('tokyo',), ('kyoto',), ('oosaka',)]
[('tokyo', 30), ('kyoto', 20), ('oosaka', 28)]
제대로 할 수 있었습니다.
끝
이것이 실용성이 있을지 어떨지 모릅니다 사용하지 않는 것이므로(-_-;)
다음은 pandas로 읽을 수 있으면 sklean등에 사용하기 쉬워지기 때문에 그것을 만들고 싶네요.
Reference
이 문제에 관하여(파이썬의 sqlite3에서 sql을 사용하여 데이터베이스에서 데이터를 열별로 꺼내는 함수를 만들어 보았다 [sqlite3 , sql ,pandas]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kzrn3318/items/233b6549b99c75f7a3d4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
city = ["tokyo","kyoto","oosaka"]
num = [30,20,28]
df_1 = pd.DataFrame({"city":city,"number_of_city":num})
path = "tamesi.db"
conn = sqlite3.connect(path)
cur = conn.cursor()
sql.to_sql(df_1,"study",conn,if_exists="replace",index=None)
cur.close()
con.close()
만들었습니다.
def ret_column(db,table,column=""):
assert bool(column), "no column is spcified"
conn= sqlite3.connect(db)
cur = conn.cursor()
cur.execute("select {} from {}".format(column,table))
val = cur.fetchall()
cur.close()
conn.close()
return val
column에 꺼내고 싶은 것을 넣어 꺼냅니다. 일단 열에 아무것도 없으면 오류를 반환하려고했습니다.
하는 것은 단순히 db와 table을 지정하고 sql 문을 호출하는 것입니다.
모든 데이터를 검색하는 함수 만들기
모처럼 왜 전체 데이터를 꺼내는 함수를 작성해 보겠습니다.
만들었습니다.
def ret_all(db,table):
conn = sqlite3.connect(db)
cur = conn.cursor()
cur.execute("select * from {}".format(table))
val = cur.fetchall()
cur.close()
conn.close()
return val
칼럼 지정이 없기 때문에 이쪽이 간단했습니다.
사용해보기
path = "tamesi.db"
table="study"
val_1 = ret_column(path,table,column="city")
val_2 = ret_all(path,table)
print(val_1)
print(val_2)
#以下出力
[('tokyo',), ('kyoto',), ('oosaka',)]
[('tokyo', 30), ('kyoto', 20), ('oosaka', 28)]
제대로 꺼낼 수 있는 것을 확인할 수 있었습니다.
드디어 인스턴스화해보자
간단하게 class로 구현해 보았습니다.
class ret_from_db():
def __init__(self,db):
self.db = db
def ret_column(self,table,column=""):
assert bool(column), "no column is spcified"
conn= sqlite3.connect(self.db)
cur = conn.cursor()
cur.execute("select {} from {}".format(column,table))
val = cur.fetchall()
cur.close()
conn.close()
return val
def ret_all(self,table):
conn = sqlite3.connect(self.db)
cur = conn.cursor()
cur.execute("select * from {}".format(table))
val = cur.fetchall()
cur.close()
conn.close()
return val
위 두 개를 붙였을 뿐입니다, 특필은 없음.
사용해 보았습니다.
get_db = ret_from_db(db="tamesi.db")
val_1 = get_db.ret_column(table="study",column="city")
val_2 = get_db.ret_all(table="study")
print(val_1)
print(val_2)
#以下出力
[('tokyo',), ('kyoto',), ('oosaka',)]
[('tokyo', 30), ('kyoto', 20), ('oosaka', 28)]
제대로 할 수 있었습니다.
끝
이것이 실용성이 있을지 어떨지 모릅니다 사용하지 않는 것이므로(-_-;)
다음은 pandas로 읽을 수 있으면 sklean등에 사용하기 쉬워지기 때문에 그것을 만들고 싶네요.
Reference
이 문제에 관하여(파이썬의 sqlite3에서 sql을 사용하여 데이터베이스에서 데이터를 열별로 꺼내는 함수를 만들어 보았다 [sqlite3 , sql ,pandas]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kzrn3318/items/233b6549b99c75f7a3d4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def ret_all(db,table):
conn = sqlite3.connect(db)
cur = conn.cursor()
cur.execute("select * from {}".format(table))
val = cur.fetchall()
cur.close()
conn.close()
return val
path = "tamesi.db"
table="study"
val_1 = ret_column(path,table,column="city")
val_2 = ret_all(path,table)
print(val_1)
print(val_2)
#以下出力
[('tokyo',), ('kyoto',), ('oosaka',)]
[('tokyo', 30), ('kyoto', 20), ('oosaka', 28)]
제대로 꺼낼 수 있는 것을 확인할 수 있었습니다.
드디어 인스턴스화해보자
간단하게 class로 구현해 보았습니다.
class ret_from_db():
def __init__(self,db):
self.db = db
def ret_column(self,table,column=""):
assert bool(column), "no column is spcified"
conn= sqlite3.connect(self.db)
cur = conn.cursor()
cur.execute("select {} from {}".format(column,table))
val = cur.fetchall()
cur.close()
conn.close()
return val
def ret_all(self,table):
conn = sqlite3.connect(self.db)
cur = conn.cursor()
cur.execute("select * from {}".format(table))
val = cur.fetchall()
cur.close()
conn.close()
return val
위 두 개를 붙였을 뿐입니다, 특필은 없음.
사용해 보았습니다.
get_db = ret_from_db(db="tamesi.db")
val_1 = get_db.ret_column(table="study",column="city")
val_2 = get_db.ret_all(table="study")
print(val_1)
print(val_2)
#以下出力
[('tokyo',), ('kyoto',), ('oosaka',)]
[('tokyo', 30), ('kyoto', 20), ('oosaka', 28)]
제대로 할 수 있었습니다.
끝
이것이 실용성이 있을지 어떨지 모릅니다 사용하지 않는 것이므로(-_-;)
다음은 pandas로 읽을 수 있으면 sklean등에 사용하기 쉬워지기 때문에 그것을 만들고 싶네요.
Reference
이 문제에 관하여(파이썬의 sqlite3에서 sql을 사용하여 데이터베이스에서 데이터를 열별로 꺼내는 함수를 만들어 보았다 [sqlite3 , sql ,pandas]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kzrn3318/items/233b6549b99c75f7a3d4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class ret_from_db():
def __init__(self,db):
self.db = db
def ret_column(self,table,column=""):
assert bool(column), "no column is spcified"
conn= sqlite3.connect(self.db)
cur = conn.cursor()
cur.execute("select {} from {}".format(column,table))
val = cur.fetchall()
cur.close()
conn.close()
return val
def ret_all(self,table):
conn = sqlite3.connect(self.db)
cur = conn.cursor()
cur.execute("select * from {}".format(table))
val = cur.fetchall()
cur.close()
conn.close()
return val
get_db = ret_from_db(db="tamesi.db")
val_1 = get_db.ret_column(table="study",column="city")
val_2 = get_db.ret_all(table="study")
print(val_1)
print(val_2)
#以下出力
[('tokyo',), ('kyoto',), ('oosaka',)]
[('tokyo', 30), ('kyoto', 20), ('oosaka', 28)]
이것이 실용성이 있을지 어떨지 모릅니다 사용하지 않는 것이므로(-_-;)
다음은 pandas로 읽을 수 있으면 sklean등에 사용하기 쉬워지기 때문에 그것을 만들고 싶네요.
Reference
이 문제에 관하여(파이썬의 sqlite3에서 sql을 사용하여 데이터베이스에서 데이터를 열별로 꺼내는 함수를 만들어 보았다 [sqlite3 , sql ,pandas]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kzrn3318/items/233b6549b99c75f7a3d4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)