티스토리 뷰

카테고리 없음

SQLite - Python

뽀로로친구에디 2018. 8. 21. 11:23

SQLite - Python

이 장에서는 Python 프로그램에서 SQLite를 사용하는 방법을 배우게됩니다.


설치

SQLite3는 Gerhard Haring이 작성한 sqlite3 모듈을 사용하여 Python과 통합 할 수 있습니다. PEP 249에서 설명한 DB-API 2.0 스펙을 준수하는 SQL 인터페이스를 제공합니다. Python 버전 2.5.x와 함께 기본적으로 제공되므로이 모듈을 별도로 설치할 필요는 없습니다.

sqlite3 모듈을 사용하려면 먼저 데이터베이스를 나타내는 연결 개체를 만든 다음 선택적으로 커서 개체를 만들면 모든 SQL 문 실행에 도움이됩니다.


파이썬 sqlite3 모듈 API

다음은 중요한 sqlite3 모듈 루틴입니다. Python 프로그램에서 SQLite 데이터베이스로 작업 할 필요가 있습니다. 보다 정교한 응용 프로그램을 찾고 있다면 파이썬 sqlite3 모듈의 공식 문서를 살펴볼 수 있습니다.


Sr.No.API & Description
1

sqlite3.connect(database [,timeout ,other optional arguments])

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

데이터베이스가 여러 연결에 의해 액세스 되고 프로세스 중 하나가 데이터베이스를 수정하면 해당 트랜잭션이 커밋 될 때까지 SQLite 데이터베이스가 잠깁니다. timeout 매개 변수는 연결에서 예외를 발생시킬 때까지 잠금이 사라질 때까지 대기해야하는 기간을 지정합니다. timeout 매개 변수의 기본값은 5.0 (5 초)입니다.

주어진 데이터베이스 이름이 존재하지 않으면 이 호출은 데이터베이스를 생성합니다. 현재 디렉토리를 제외한 다른 곳에서 데이터베이스를 작성하려는 경우 필요한 경로로 filename을 지정할 수 있습니다.

2

connection.cursor([cursorClass])

이 루틴은 파이썬으로 데이터베이스 프로그래밍 전체에 걸쳐 사용될 커서를 생성합니다. 이 메서드는 하나의 선택적 매개 변수인 cursorClass를 허용합니다. 제공되는 경우 sqlite3.Cursor를 확장하는 사용자 지정 커서 클래스 여야합니다.

3

cursor.execute(sql [, optional parameters])

이 루틴은 SQL 문을 실행합니다. SQL 문은 매개 변수화 될 수 있다 (즉, SQL 리터럴 대신에 자리 표시 자). sqlite3 모듈은 물음표와 명명 된 자리 표시자 (스타일이라는 이름)의 두 가지 자리 표시자를 지원합니다.

For example − cursor.execute("insert into people values (?, ?)", (who, age))

4

connection.execute(sql [, optional parameters])

이 루틴은 커서 객체에 의해 제공되는 위의 실행 메소드의 바로 가기이며 커서 메소드를 호출하여 중간 커서 객체를 만든 다음 지정된 매개 변수로 커서의 execute 메소드를 호출합니다.

5

cursor.executemany(sql, seq_of_parameters)

이 루틴은 모든 매개 변수 시퀀스 또는 시퀀스 sql에있는 매핑에 대해 SQL 명령을 실행합니다.

6

connection.executemany(sql[, parameters])

이 루틴은 커서 메서드를 호출하여 중간 커서 개체를 만든 다음 주어진 매개 변수로 cursor.s executemany 메서드를 호출하는 바로 가기입니다.

7

cursor.executescript(sql_script)

이 루틴은 스크립트 형식으로 제공된 여러 SQL 문을 한 번에 실행합니다. COMMIT 문을 먼저 실행 한 다음 매개 변수로 가져온 SQL 스크립트를 실행합니다. 모든 SQL 문은 세미콜론 (;)으로 구분해야합니다.

8

connection.executescript(sql_script)

이 루틴은 커서 메소드를 호출하여 중간 커서 객체를 생성 한 후 주어진 매개 변수로 커서의 startscript 메소드를 호출하는 바로 가기입니다.

9

connection.total_changes()

이 루틴은 데이터베이스 연결이 열린 후 수정, 삽입 또는 삭제 된 데이터베이스 행의 총 수를 반환합니다.

10

connection.commit()

이 메소드는 현재 트랜잭션을 커밋합니다. 이 메소드를 호출하지 않으면, commit ()의 마지막 호출 이후에 수행 한 작업은 다른 데이터베이스 연결에서 볼 수 없습니다.

11

connection.rollback()

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

12

connection.close()

이 메서드는 데이터베이스 연결을 닫습니다. 이것은 자동적으로 commit ()를 호출하지 않는다는 것에 유의하십시오. commit ()을 먼저 호출하지 않고 데이터베이스 연결을 종료하면 변경 사항이 손실됩니다!

13

cursor.fetchone()

이 메서드는 쿼리 결과 집합의 다음 행을 가져 와서 단일 시퀀스를 반환하거나 더 이상 데이터를 사용할 수 없으면 없음을 반입합니다.

14

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

이 루틴은 조회 결과의 다음 행 세트를 페치하여 목록을 리턴합니다. 행이 더 이상 사용 가능하지 않으면 빈 목록이 리턴됩니다. 이 메서드는 size 매개 변수에 지정된 수만큼 행을 페치합니다.

15

cursor.fetchall()

이 루틴은 조회 결과의 모든 (나머지) 행을 페치하여 목록을 리턴합니다. 사용할 수있는 행이 없으면 빈 목록이 반환됩니다.



데이터베이스에 연결

다음 Python 코드는 기존 데이터베이스에 연결하는 방법을 보여줍니다. 데이터베이스가 존재하지 않으면, 데이터베이스가 작성되고 마지막으로 데이터베이스 오브젝트가 리턴됩니다.

sqlite.py

#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') print("Opened database successfully")


여기에서는 데이터베이스 이름을 특수 이름으로 제공 할 수도 있습니다. memory : RAM에 데이터베이스를 작성합니다. 이제 위의 프로그램을 실행하여 현재 디렉토리에 데이터베이스 test.db를 만듭니다. 귀하의 요구 사항에 따라 경로를 변경할 수 있습니다. 위의 코드를 sqlite.py 파일에 보관하고 아래와 같이 실행하십시오. 데이터베이스가 성공적으로 작성되면 다음 메시지가 표시됩니다.

$python sqlite.py Open database successfully


테이블 생성

다음 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



DELETE 작업

다음 Python 코드는 DELETE 문을 사용하여 레코드를 삭제 한 다음 COMPANY 테이블의 나머지 레코드를 가져 와서 표시하는 방법을 보여줍니다.

#!/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()

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

Opened database successfully
Total number of rows deleted : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0

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

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

Operation done successfully


댓글
최근에 달린 댓글
글 보관함
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Total
Today
Yesterday
    뽀로로친구에디
    최근에 올라온 글