English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQLite Python

설치

SQLite3 사용할 수 있습니다.3 모듈과 Python을 통합합니다. sqlite3 모듈은 Gerhard Haring이 작성했습니다. PEP와 호환되는 API를 제공합니다. 249 DB-API 2.0 규격과 호환되는 SQL 인터페이스를 제공합니다. Python에서는 해당 모듈을 별도로 설치할 필요가 없습니다. 2.5.x 이상 버전은 기본적으로 해당 모듈을 포함하고 있습니다.

sqlite를 사용하려면3 모듈을 사용하려면, 먼저 데이터베이스를 나타내는 연결 객체를 생성해야 하며, 선택적으로 커서 객체를 생성할 수 있습니다. 이는 모든 SQL 문을 실행하는 데 도움이 됩니다.

Python sqlite3 모듈 API

아래는 중요한 sqlite3 모듈 프로그램은 Python 프로그램에서 SQLite 데이터베이스를 사용하는 요구를 충족시킬 수 있습니다. 더 많은 세부 사항을 알고 싶다면 Python sqlite를 확인하십시오.3 모듈의 공식 문서.

순번API & 설명
1sqlite3.connect(database [,timeout ,기타 선택적인 매개변수])

이 API는 SQLite 데이터베이스 파일 database에 대한 연결을 엽니다. ":memory:"를 사용하여 디스크 대신 RAM에 데이터베이스에 대한 연결을 엽니다. 데이터베이스가 성공적으로 열리면 연결 객체를 반환합니다.

데이터베이스가 여러 연결에 의해 접근되고, 중 하나가 데이터베이스를 수정하면, 이때 SQLite 데이터베이스가 잠금됩니다. timeout 매개변수는 연결이 잠금을 기다리는 시간을 나타내며, 예외가 발생하거나 연결이 끊어지면 예외가 발생합니다. timeout 매개변수의 기본 값은 5.0(5 초).

주어진 데이터베이스 이름 filename이 존재하지 않으면, 이 호출은 데이터베이스를 생성합니다. 현재 디렉토리에서 데이터베이스를 생성하지 않고 싶다면, 경로를 포함한 파일 이름을 지정할 수 있습니다. 이렇게 하면 어디서든 데이터베이스를 생성할 수 있습니다.

2connection.cursor([cursorClass])

이 프로그램은 하나의 cursorPython 데이터베이스 프로그래밍에서 사용됩니다. 이 메서드는 단일 선택적인 매개변수 cursorClass을 받습니다. 이 매개변수가 제공되면, 이 매개변수는 sqlite에서 확장된 객체여야 합니다.3.Cursor의 정의된 커서 클래스.

3cursor.execute(sql [, 선택적인 매개변수])

이 프로그램은 SQL 문장을 실행합니다. 이 SQL 문장은 파라미터화될 수 있습니다(즉, SQL 텍스트 대신 대체 기호를 사용). sqlite3 모듈은 두 가지 타입의 대체 기호를 지원합니다: 물음표와 이름 지정된 대체 기호(이름 스타일).

예를 들어: cursor.execute("insert into people values (?, ?)", (who, age))

4connection.execute(sql [, 선택적인 매개변수])

이 프로그램은 위에서 실행된 커서(cursor) 객체가 제공하는 메서드의 약속 방식입니다. 커서(cursor) 메서드를 호출하여 중간 커서 객체를 생성한 후, 주어진 매개변수로 커서의 execute 메서드를 호출합니다.

5cursor.executemany(sql, seq_of_parameters)

이 프로그램은 seq_of_parameters에 있는 모든 매개변수나 매핑에 대해 SQL 명령어를 실행합니다.

6connection.executemany(sql[, parameters])

이 프로시저는 호출된 커서 메서드를 통해 생성된 중간 커서 객체의 단축 방법으로, 주어진 파라미터로 커서의 executemany 메서드를 호출합니다.

7cursor.executescript(sql_script)

이 프로시저는 스크립트를 받으면 여러 SQL 문장을 실행합니다. 먼저 COMMIT 문장을 실행한 후, 파라미터로传入된 SQL 스크립트를 실행합니다. 모든 SQL 문장은 세미콜론 ;으로 구분되어야 합니다.

8connection.executescript(sql_script)

이 프로시저는 호출된 커서 메서드를 통해 생성된 중간 커서 객체의 단축 방법으로, 주어진 파라미터로 커서의 executescript 메서드를 호출합니다.

9connection.total_changes()

이 프로시저는 데이터베이스 연결이 열린 이후에 수정, 삽입 또는 삭제된 데이터베이스 총 행 수를 반환합니다.

10connection.commit()

이 메서드는 현재 트랜잭션을 제출합니다. 이 메서드를 호출하지 않으면, 마지막 commit() 호출 이후에도 모든 작업이 다른 데이터베이스 연결에 대해 보이지 않습니다.

11connection.rollback()

이 메서드는 마지막 commit() 호출 이후 데이터베이스에 대해 변경한 변경 사항을 롤백합니다.

12connection.close()

이 메서드는 데이터베이스 연결을 닫습니다. 이는 자동으로 commit()을 호출하지 않습니다. commit() 메서드를 호출하지 않고 데이터베이스 연결을 닫으면, 모든 변경 사항이 모두 손실됩니다!

13cursor.fetchone()

이 메서드는 쿼리 결과 집합에서 다음 행을 가져와 단일 시퀀스로 반환합니다. 더 이상 사용할 수 있는 데이터가 없으면 None을 반환합니다.

14cursor.fetchmany([size=cursor.arraysize])

이 메서드는 쿼리 결과 집합에서 다음 행 그룹을 가져와 목록으로 반환합니다. 더 이상 사용할 수 있는 행이 없으면 빈 목록을 반환합니다. 이 메서드는 size 파라미터로 지정된 최대한 많은 행을 가져옵니다.

15cursor.fetchall()

이 프로시저는 쿼리 결과 집합에서 모든 (잔여) 행을 가져와 목록으로 반환합니다. 사용할 수 있는 행이 없으면 빈 목록을 반환합니다.

데이터베이스 연결

아래의 Python 코드는 기존 데이터베이스에 연결하는 방법을 보여줍니다. 데이터베이스가 존재하지 않으면 생성되고, 마지막으로 데이터베이스 객체가 반환됩니다.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "데이터베이스 열림에 성공했습니다"

여기서도 데이터베이스 이름을 특정 이름으로 복사할 수 있습니다 :memory:RAM에서 데이터베이스를 생성합니다. 지금, 위 프로그램을 실행하여 현재 디렉토리에서 데이터베이스를 생성하겠습니다 test.db경로를 필요에 따라 변경할 수 있습니다. 위 코드를 sqlite.py 파일에 저장하고 다음과 같이 실행합니다. 데이터베이스가 성공적으로 생성되면 다음과 같은 메시지가 표시됩니다:

$chmod +x sqlite.py
$./sqlite.py
Database opened successfully

테이블 생성

이전에 생성한 데이터베이스에서 테이블을 생성하는 Python 코드 단편을 사용합니다:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "데이터베이스 열림에 성공했습니다"
c = conn.cursor()
c.execute('''CREATE TABLE COMPANY
       (ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL,
       AGE            INT     NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL);''')
print "Table created successfully"
conn.commit()
conn.close()

위 프로그램이 실행될 때, 그것은 test.db COMPANY 테이블을 생성하고 다음과 같은 메시지를 표시합니다:

데이터베이스 열림에 성공했습니다
Table created successfully

INSERT 작업

위에 생성한 COMPANY 테이블에서 기록을 생성하는 방법을 보여주는 Python 프로그램입니다:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "데이터베이스 열림에 성공했습니다"
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

      VALUES (1, 'Paul', 32, 'California', 20000.00 )")
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )")
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )")
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )")
conn.commit()
print "Records created successfully"
conn.close()

위 프로그램이 실행될 때, 그것은 주어진 기록을 COMPANY 테이블에 생성하고 다음 두 행을 표시합니다:

데이터베이스 열림에 성공했습니다
Records created successfully

SELECT 작업

이전에 생성한 COMPANY 테이블에서 기록을 가져오고 표시하는 방법을 보여주는 Python 프로그램입니다:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "데이터베이스 열림에 성공했습니다"
cursor = c.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully"
conn.close()

위 프로그램이 실행될 때, 다음과 같은 결과가 생성됩니다:

데이터베이스 열림에 성공했습니다
ID =  1
NAME =  Paul
ADDRESS =  캘리포니아
SALARY =  20000.0
ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0
ID =  3
NAME =  Teddy
ADDRESS =  노르웨이
SALARY =  20000.0
ID =  4
NAME =  Mark
ADDRESS =  Rich-월요일
SALARY =  65000.0
작업이 성공적으로 완료되었습니다

UPDATE 작업

아래의 Python 코드는 UPDATE 문을 사용하여 어떤 기록을 업데이트하고, COMPANY 테이블에서 업데이트된 기록을 가져와 표시하는 방법을 보여줍니다:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "데이터베이스 열림에 성공했습니다"
c.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1)
conn.commit()
print "총 수정된 행의 수 :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully"
conn.close()

위 프로그램이 실행될 때, 다음과 같은 결과가 생성됩니다:

데이터베이스 열림에 성공했습니다
총 수정된 행의 수: 1
ID =  1
NAME =  Paul
ADDRESS =  캘리포니아
SALARY =  25000.0
ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0
ID =  3
NAME =  Teddy
ADDRESS =  노르웨이
SALARY =  20000.0
ID =  4
NAME =  Mark
ADDRESS =  Rich-월요일
SALARY =  65000.0
작업이 성공적으로 완료되었습니다

DELETE 작업

아래의 Python 코드는 DELETE 문을 사용하여 어떤 기록을 지우고, COMPANY 테이블에서 나머지 기록을 가져와 표시하는 방법을 보여줍니다:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "데이터베이스 열림에 성공했습니다"
c.execute("DELETE from COMPANY where ID=2;
conn.commit()
print "삭제된 행의 총 수 :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully"
conn.close()

위 프로그램이 실행될 때, 다음과 같은 결과가 생성됩니다:

데이터베이스 열림에 성공했습니다
삭제된 행의 총 수 : 1
ID =  1
NAME =  Paul
ADDRESS =  캘리포니아
SALARY =  20000.0
ID =  3
NAME =  Teddy
ADDRESS =  노르웨이
SALARY =  20000.0
ID =  4
NAME =  Mark
ADDRESS =  Rich-월요일
SALARY =  65000.0
작업이 성공적으로 완료되었습니다