인터페이스
DB API 는 파이썬과 데이터베이스의 상호작용을 돕는 어떤 약속이다 !
PEP 249
데이터 베이스와 작업하는 코드 살펴보기 전 파이선의 PEP 249를 보자
PEP 249는 파이썬에 명시하는 DBAPI v2.0문서이다
SQLite
위 데이터베이스는 파이썬과 함께 설치되는 가벼운 파일형 관계형 데이터베이스
파일형 데이터베이스로 실행 중인 프로그램의 메모리에 상주할 수 있어 파일 삭제하거나 프로세스 종료등으로 데이터 손실 주의해야한다
데이터베이스 연결
import sqlite3
conn = sqlite3.connect('test.db')
sqlite는 아래와 같이 메모리에서도 실행될 수 있다
import sqlite3
conn = sqlite3.connect(':memory:')
해당 세션을 통해 데이터베이스와 소통하기 위한 cursor만들기
cur = conn.cursor()
커서메소드
cursor.execute 사용하기 - 쿼리문 바로 넘길 수 있다
테이블 만들기
cur.execure(""CREATE TABLE test_table (
name VARCHAR(32),
age INT);
""")
위 코드 파이썬 코드 내에서 SQL쿼리로 test_table만들었다
데이터 추가하기
cur.execute("INSERT INTO test_table (name, age) VALUES ('spongebob', 12);")
#아래와 같은 방법도 사용 가능
name ='banana'
age =13
cur.execute("INSERT INTO test_table (name, age) VALUES (?,?)", (name, age))
레코드 더 추가하기
cur.execute("INSERT INTO test_table(name, age) VALUES ('patrick', 13);")
cur.execute("INSERT INTO test_table(name, age) VALUES ('squidward', 14);")
#아래와 같은 방법도 사용 가능
users = [('lemon', 10),
('apple',15)]
for user in users:
cur.execute("INSERT INTO test_table (name, age) VALUES (?,?);", user)
데이터베이스 연결 어플리케이션을 이용해 데이터 확인해보면 아직 데이터가 입력되지 않은 상태이다
con.commit
sqlite3의 commit함수에 대한 설명
- 이 메서드는 현재 트랜잭션을 커밋, 이 메서드 호출하지 않으면, 마지막 commit()호출 이후 수행한 작업은 다른 데이터베이스 연결에서 볼 수 없다
데이터베이스에 기록한 데이터가 왜 보이지 않냐? -> 메서드 호출하는 것을 잊지 않았는지 확인하기
commit은 데이터베이스 연결에 대한 connection개체 통해 사용 가능
connection 객체인 conn 만들었기 때문에 커밋 수행
#type(conn)은 어떤 형식?
conn.commit()
cursor.fetchone, cursor.fetchall
추가한 데이터 조회
cur.execute("SELECT * FROM test_table;")
하지만 보이지 않는다
리턴되는 문구들은 커서 객체에 대한 정보를 알려준다
# 이런 문구가 보일 수도 있다
<sqlite3.Cursor object at 0x7fb026aacb20>
그렇다면 데이터베이스에서 보내는 결과 어떻게 조회할까?
커서의 다른 메소드인 fetchone, fetchmany, fetchall 활용해라
cur.fetchall()
fetchall은 리스트 형식으로 쿼리 통해 실행된 결과 리턴한다
fetchone은 데이터 베이스에서 전달하는 결과에서 첫번째만 리턴한다
'데이터 분석 및 프로젝트' 카테고리의 다른 글
[딥러닝]- VGG19 모델 활용한 이미지 콜라보 만들기 (0) | 2023.05.29 |
---|---|
SELECT 문 실행 순서 / CASE/ SUBQUERY/IN NOT IN /FROM (0) | 2023.05.23 |
SQL 내장 함수 (0) | 2023.05.23 |
아우디 중고차 가격 예측하기 - 머신러닝 (0) | 2023.05.10 |
N111a- 과제 (0) | 2023.03.16 |