Python에는 가벼운 관계형 데이터베이스SQLite가 함께 제공됩니다. 이 데이터베이스는 SQL 언어를 사용합니다. 백엔드 데이터베이스로서 SQLite를 Python과 함께 사용하여 웹 사이트를 구축하거나 데이터 저장이 필요한 도구를 만들 수 있습니다. SQLite는 HTML5, 모바일 단말기 등 다른 분야에서도 널리 사용되고 있습니다. Python 표준 라이브러리의 sqlite3은 이 데이터베이스에 대한 인터페이스를 제공합니다.
서점의 도서 카테고리와 가격을 저장하는 간단한 관계형 데이터베이스를 만들어 보겠습니다. 데이터베이스에는 두 개의 테이블이 포함되어 있습니다. 카테고리는 분류를 기록하는 데 사용되며 책은 특정 도서에 대한 정보를 기록하는 데 사용됩니다. 책은 특정 카테고리에 속하므로 책에는 카테고리 테이블의 기본 키 ID를 가리키는 외래 키(외부 키)가 있습니다.
데이터베이스 생성
먼저 데이터베이스를 생성하고, 데이터베이스에 테이블을 생성하겠습니다. connect()를 사용하여 데이터베이스에 연결한 후 포인터 커서를 위치시켜 SQL 명령을 실행할 수 있습니다.
# By Vamei import sqlite3 # test.db is a file in the working directory. conn = sqlite3.connect("test.db") c = conn.cursor() # create tables c.execute('''CREATE TABLE category (id int primary key, sort int, name text)''') c.execute('''CREATE TABLE book (id int primary key, sort int, name text, price real, category int, FOREIGN KEY (category) REFERENCES category(id))''') # save the changes conn.commit() # close the connection with the database conn.close()
SQLite의 데이터베이스는 디스크에 있는 파일입니다. 위의 test.db와 같이 전체 데이터베이스를 쉽게 이동하거나 복사할 수 있습니다. test.db는 처음부터 존재하지 않으므로 SQLite는 자동으로 새 파일을 생성합니다.
execute() 명령을 사용하여 두 개의 SQL 명령을 실행하여 데이터베이스에 두 개의 테이블을 생성했습니다. 생성 후 데이터베이스를 저장하고 연결을 끊습니다.
데이터 삽입
위에서 데이터베이스와 테이블이 생성되고, 데이터베이스의 추상적인 구조가 구축된다. 다음은 동일한 데이터베이스에 데이터를 삽입합니다.
# By Vamei import sqlite3 conn = sqlite3.connect("test.db") c = conn.cursor() books = [(1, 1, 'Cook Recipe', 3.12, 1), (2, 3, 'Python Intro', 17.5, 2), (3, 2, 'OS Intro', 13.6, 2), ] # execute "INSERT" c.execute("INSERT INTO category VALUES (1, 1, 'kitchen')") # using the placeholder c.execute("INSERT INTO category VALUES (?, ?, ?)", [(2, 2, 'computer')]) # execute multiple commands c.executemany('INSERT INTO book VALUES (?, ?, ?, ?, ?)', books) conn.commit() conn.close()
데이터를 삽입할 때 실행()을 사용하여 전체 SQL 문을 실행할 수도 있습니다. SQL 문의 매개변수는 대체 기호로 "?"를 사용하고, 후속 매개변수에는 특정 값을 부여한다. "%s"와 같은 Python의 형식 문자열 은 사용할 수 없습니다. 이 사용법은 SQL 주입 공격에 취약하기 때문입니다.
executemany() 메서드를 사용하여 여러 삽입을 수행하고 여러 레코드를 추가할 수도 있습니다. 각 레코드는 위 books 테이블의 요소와 같이 테이블의 요소입니다.
쿼리
쿼리 문을 실행한 후 Python은 쿼리에서 얻은 여러 레코드가 포함된 루퍼를 반환합니다. 루프에서 읽거나 sqlite3에서 제공하는 fetchone() 및 fetchall() 메서드를 사용하여 레코드를 읽을 수 있습니다.
# By Vamei import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() # retrieve one record c.execute('SELECT name FROM category ORDER BY sort') print(c.fetchone()) print(c.fetchone()) # retrieve all records as a list c.execute('SELECT * FROM book WHERE book.category=1') print(c.fetchall()) # iterate through the records for row in c.execute('SELECT name, price FROM book ORDER BY sort'): print(row)
업데이트 및 삭제
기록을 업데이트하거나 삭제할 수 있습니다:
# By Vamei conn = sqlite3.connect("test.db") c = conn.cursor() c.execute('UPDATE book SET price=? WHERE id=?',(1000, 1)) c.execute('DELETE FROM book WHERE id=2') conn.commit() conn.close()
전체 테이블을 직접 삭제할 수도 있습니다:
c.execute('DROP TABLE book')
test.db를 삭제하면 전체 데이터베이스가 삭제됩니다.
요약
sqlite3은 SQLite에 대한 인터페이스일 뿐입니다. SQLite 데이터베이스를 능숙하게 사용하려면 관계형 데이터베이스에 대한 더 많은 지식을 배워야 합니다.
위 내용은 Python 데이터베이스 sqlite3 응용 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!