SQLite 클래식 튜토리얼login
SQLite 클래식 튜토리얼
작가:php.cn  업데이트 시간:2022-04-13 17:05:02

SQLite-파이썬


설치

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

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

Python sqlite3 모듈 API

다음은 Python 프로그램에서 SQLite 데이터베이스를 사용하기 위한 요구 사항을 충족할 수 있는 중요한 sqlite3 모듈 프로그램입니다. 더 자세한 내용이 필요하면 Python sqlite3 모듈에 대한 공식 문서를 확인하세요.

일련번호API 및 설명
1sqlite3. connect (database [,timeout, 기타 선택적 인수])

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

여러 연결을 통해 데이터베이스에 액세스하고 그 중 하나가 데이터베이스를 수정하는 경우 트랜잭션이 커밋될 때까지 SQLite 데이터베이스가 잠깁니다. timeout 매개변수는 예외가 발생하고 연결이 끊어질 때까지 연결이 잠금을 기다리는 기간을 나타냅니다. 시간 초과 매개변수의 기본값은 5.0(5초)입니다.

주어진 데이터베이스 이름 filename이 존재하지 않는 경우 이 호출은 데이터베이스를 생성합니다. 현재 디렉터리에 데이터베이스를 생성하지 않으려면 경로와 함께 파일 이름을 지정하면 어디에서나 데이터베이스를 생성할 수 있습니다.

2connection.cursor([cursorClass])

이 루틴은 커서를 생성합니다. 은 Python 데이터베이스 프로그래밍에 사용됩니다. 이 메소드는 단일 선택적 매개변수인 CursorClass를 허용합니다. 이 매개변수가 제공되는 경우 sqlite3.Cursor를 확장하는 사용자 정의 커서 클래스여야 합니다.

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

이 루틴은 SQL을 실행합니다. 성명. SQL 문은 매개 변수화될 수 있습니다(즉, SQL 텍스트 대신 자리 표시자를 사용함). sqlite3 모듈은 물음표와 명명된 자리 표시자(명명된 스타일)라는 두 가지 유형의 자리 표시자를 지원합니다.

예:cursor.execute("사람 값에 삽입 ​​(?, ?)", (누가, 나이))

4connection.execute(sql [, OptionalParameters])

이 루틴은 커서 객체가 제공하는 위 메소드에 대한 단축키로, 커서를 호출하여 실행됩니다. ( 커서) 메소드는 중간 커서 객체를 생성한 다음 지정된 매개변수를 사용하여 커서의 실행 메소드를 호출합니다.

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)

이 루틴은 호출 커서 ) 메서드를 생성합니다. 중간 커서 개체에 대한 바로 가기를 지정한 다음 지정된 매개 변수를 사용하여 커서의 실행 스크립트 메서드를 호출합니다.

9connection.total_changes()

이 루틴은 수정된 값을 반환합니다. 데이터베이스 연결이 열린 이후 삽입되거나 삭제된 데이터베이스 행의 총 개수입니다.

10connection.commit()

이 메서드는 현재 트랜잭션을 커밋합니다. 이 메서드를 호출하지 않으면 마지막 commit() 호출 이후 수행된 모든 작업이 다른 데이터베이스 연결에 표시되지 않습니다.

11connection.rollback()

이 메소드는 마지막 커밋 호출 이후 롤백합니다( ) 이후 데이터베이스가 변경되었습니다.

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 "Opened database successfully";

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

$chmod +x sqlite.py
$./sqlite.py
Open database successfully

Creating table

다음 Python 코드 조각은 이전에 생성된 데이터베이스에 테이블을 생성하는 데 사용됩니다. :

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.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.close()

위 프로그램이 실행되면 test.db에 COMPANY 테이블이 생성되고 아래와 같은 메시지가 표시됩니다.

Opened database successfully
Table created successfully

INSERT 작업

아래 Python 프로그램은 위에서 생성한 COMPANY 테이블에 레코드를 생성하는 방법을 보여줍니다.

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

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

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

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

conn.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 테이블에 지정된 레코드를 생성하고 다음 두 줄을 표시합니다. 🎜>

Opened database successfully
Records created successfully

SELECT 작업

다음 Python 프로그램은 이전에 생성된 COMPANY 테이블에서 레코드를 가져오고 표시하는 방법을 보여줍니다.

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

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()

위 프로그램을 실행하면 다음이 생성됩니다. 결과:

Opened database successfully
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

UPDATE 작업

다음 Python 코드는 UPDATE 문을 사용하여 레코드를 업데이트한 다음 COMPANY 테이블에서 업데이트된 레코드를 가져와 표시하는 방법을 보여줍니다.

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
conn.commit
print "Total number of rows updated :", 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()

위 프로그램 실행 🎜>
Opened database successfully
Total number of rows updated : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  25000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

위 프로그램을 실행하면 다음과 같은 결과가 나옵니다.

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute("DELETE from COMPANY where ID=2;")
conn.commit
print "Total number of rows deleted :", 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()