Welcome to Our Website

Python SQLite3 자습서(데이터베이스 프로그래밍)

이 튜토리얼에서 작업합니다 SQLite3 데이터베이스를 사용하여 프로그래밍 방식으로 Python.

일반적으로 SQLite 는 Python 을 포함한 거의 모든 프로그래밍 언어 내에서 사용할 수있는 서버가없는 데이터베이스입니다. 서버-더 적은 필요가 없음을 의미를 설치하는 별도의 서버를 작동 SQLite 에 직접 연결할 수 있도록 데이터베이스와 함께.

SQLite 경량의 데이터베이스를 제공할 수 있는 관계형 데이터베이스 관리 시스템으로 구성 필요가 없기 때문을 구성하거나 설치게 아무것도 그것을 사용합니다.,

우리는 SQLite 버전 3 또는 SQLite3 을 사용할 것이므로 시작하겠습니다.

테이블의 내용.

결 만들기

를 사용 SQLite3 에서는 파이썬은,첫째,당신은 당신을 가져오 sqlite3 모듈을 만들려면 다음 연결 객체를 연결하는 우리를 데이터베이스 저희에게 실행하여 SQL 문을 수행합니다.

할 수 있는 연결 객체를 사용하는 connect()함수:

import sqlite3con = sqlite3.connect('mydatabase.db')

를 생성하는 새로운 파일 이름을 가진’다.db’.,

Sqlite3 커서

파이썬에서 SQLite 문을 실행하려면 커서 객체가 필요합니다. 커서()메서드를 사용하여 만들 수 있습니다.

SQLite3 커서는 연결 객체의 메소드입니다. 를 실행하 SQLite3 계산서,당신은 당신의 연결을 설정해야에서 처음 만들의 객체가 커서를 사용하여 연결 객체는 다음과 같다:

con = sqlite3.connect('mydatabase.db')cursorObj = con.cursor()

이제 우리가 사용할 수 있는 커서 개체화 execute()메소드를 실행하는 어떤 SQL 쿼리를 처리합니다.,

데이터베이스 만들기

을 만들 때 연결 SQLite 을 만들 것,그 데이터베이스 파일이 자동으로지 않는 경우에 이미 존재한다. 이 데이터베이스 파일은 디스크에 생성된다;우리는 또한 사용하여 RAM 에 데이터베이스를 만들 수 있습니다:메모리:연결 기능. 이 데이터베이스를 메모리 내 데이터베이스라고합니다.

고래 코드에서는 우리가 만든 데이터베이스 시험 제외하고,마지막으로 블록 처리하는 모든 예외:

첫째,우리 가져오기 sqlite3 모듈,다음 우리는 함수를 정의 sql_connection., 이 함수 안에는 connect()함수가 연결을 설정 한 후 연결 객체를 반환하는 try 블록이 있습니다.

그런 다음 예외의 경우 오류 메시지를 인쇄하는 except block 이 있습니다. 오류가 없으면 연결이 설정되고 다음과 같이 메시지가 표시됩니다.

그 후 최종 블록에서 연결을 닫았습니다. 연결을 닫는 것은 선택 사항이지만 좋은 프로그래밍 연습이므로 사용하지 않는 리소스에서 메모리를 확보하십시오.,

테이블 만들기

테이블을 만들에 SQLite3 사용할 수 있습니다 만들기 테이블을 쿼리에서 실행()메소드가 있습니다. 다음 단계를 고려하십시오.

  1. 연결 객체를 만듭니다.
  2. 연결 개체에서 커서 개체를 만듭니다.
  3. 커서 객체를 사용하여 매개 변수로 create table query 가있는 execute 메소드를 호출합니다.,

자들과 직원을 다음과 같은 특성.

employees (id, name, salary, department, position, hireDate)

이 코드는 다음과 같이 될 것이다:

위 코드에서,우리는 정의된 두 가지 방법 첫 번째 중 하나의 연결을 설정하고 두 번째 방법은 사용하여 실행합성 테이블의 문입니다.

commit()메소드는 우리가 만드는 모든 변경 사항을 저장합니다. 결국 두 메소드가 모두 호출됩니다.

우리 테이블이 만들어 졌는지 확인하려면 SQLITE 용 DB 브라우저를 사용하여 테이블을 볼 수 있습니다. Mydatabase 를여십시오.,테이블에 데이터를 삽입하기 위해 INSERT INTO 문을 사용합니다. 다음 사항을 고려 줄의 코드:

cursorObj.execute("INSERT INTO employees VALUES(1, 'John', 700, 'HR', 'Manager', '2017-01-04')")con.commit()

을 확인하는 경우에 데이터를 삽입 찾아보기를 클릭하십시오 데이터에서 DB 브라우저

우리는 또한 값을 전달/인수를 삽입한 문서를 실행()메소드가 있습니다. 당신은 물음표(?)각 값에 대한 자리 표시 자로., 의 구문 삽입하는 것과 같은 다음과 같다:

cursorObj.execute('''INSERT INTO employees(id, name, salary, department, position, hireDate) VALUES(?, ?, ?, ?, ?, ?)''', entities)

는 엔티티에 값을 포함한 자리 표시자는 다음과 같다:

entities = (2, 'Andrew', 800, 'IT', 'Tech', '2018-02-06')

전체 코드는 다음과 같습니다:

업데이트 Table

테이블을 업데이트하기 위해 간단히 만들의 연결한 다음,커서를 만들 개체를 사용하여 연결하고 마지막으로 사용하여 업데이트 문서를 실행()메소드가 있습니다.

id 가 2 와 같은 직원의 이름을 업데이트하고 싶다고 가정 해보십시오., 업데이트를 위해 업데이트 문을 사용하고 id 가 2 와 같은 직원에 대해 사용합니다. 이 직원을 선택하는 조건으로 WHERE 절을 사용할 것입니다.

다음과 같은 코드를 살펴봅니다:

이 이름을 변경하에서 앤드류 로저스는 다음과 같다:

Select

사용할 수 있는 select 선택에서 데이터 특정 테이블. 표에서 데이터의 모든 열을 선택하려는 경우 별표(*)를 사용할 수 있습니다., 구문에 이를 위해 다음과 같습니다:

select * from table_name

에 SQLite3,SELECT 문을 실행 실행 방법의 커서를 개체입니다., 예를 들어 모든 열을 선택의 직원들의 표면 다음 코드를 실행합니다:

cursorObj.execute('SELECT * FROM employees ')

을 선택하려면 몇 가지 테이블에서 열을 다음 지정된 열과 같은 다음과 같다:

select column1, column2 from tables_name

예를 들어,

cursorObj.execute('SELECT id, name FROM employees')

select 선택에서 필요한 데이터를 데이터베이스 테이블,그리고 당신이 원하는 경우를 가져 오기 위해 선택한 데이터 fetchall()메서드의 객체가 커서를 사용됩니다. 우리는 다음 섹션에서 이것을 보여줄 것입니다.,

가져오는 모든 데이터는

가 데이터를 데이터베이스에서,우리는 실행하는 선택 문 다음 사용합니다 fetchall()메소드의 사용을 저장하는 값으로 변수입니다. 그 후에 변수를 반복하고 모든 값을 인쇄합니다.

이 코드는 다음과 같이 될 것이다:

위의 코드는 인쇄된 레코드에 데이터베이스는 다음과 같다:

사용할 수도 있습니다 fetchall()한 줄에 다음과 같다:


하려는 경우를 가져 오기에서 특정 데이터를 데이터베이스를 사용할 수 있습 WHERE., 예를 들어 급여가 800 보다 큰 직원의 id 와 이름을 가져오고 싶습니다. 이를 위해 테이블을 더 많은 행으로 채운 다음 쿼리를 실행합시다.

사용할 수 있습니다 insert 데이터를 채우거나 입력할 수 있습니다 그들에게 수동으로서 DB 브라우저 프로그램입니다.

지금,인출 id 와 이름이 사람들의 급여 greater than800

위에서 SELECT 문을 사용하는 대신 별표(*)는 우리를 지정한 id,name 속성이 있습니다., 그 결과는 다음과 같다.

SQLite3rowcount

SQLite3rowcount 사용하여 수를 반환의 영향을 받는 행거에 의해 선택 최신 실행 SQL 쿼리가 있습니다.

SELECT 문과 함께 rowcount 를 사용하면 모두 가져올 때까지 선택한 행 수를 알 수 없으므로-1 이 반환됩니다., 을 고려면 아래 예제:

print(cursorObj.execute('SELECT * FROM employees').rowcount)

따라서 얻을 행 수를 가져올 필요가 없기 때문에 모든 데이터,그리고 다음을 얻는 길이의 결과는:

rows = cursorObj.fetchall()print len (rows)

할 때 사용하여 삭제 문지 않고 어떤 상태를(where 절),는 삭제됩니다 모든 행 테이블에서,그것은 반환의 총수는 삭제된 행을 rowcount.

print(cursorObj.execute('DELETE FROM employees').rowcount)

지 않은 경우 행을 삭제하는것이 반환됩니다.,

목록은 테이블

하는 목록 모든 테이블에서 SQLite3 데이터베이스 쿼리하여 sqlite_master 테이블 다음 사용하 fetchall()가 결과에서 선택한 문입니다.

sqlite_master 는 모든 테이블을 저장하는 sqlite3 의 마스터 테이블입니다.

이 목록에 모든 테이블을 다음과 같다:

체크인 경우 테이블이 있는지

테이블을 생성할 때,우리는지 확인해야는 테이블이 이미 존재했다. 마찬가지로 테이블을 제거/삭제할 때 테이블이 있어야합니다.,s”DROP TABLE 문 다음과 같다:

drop table if exists table_name

예를 들어,

cursorObj.execute('drop table if exists projects')

우리는 또한 확인하는 경우에는 테이블 우리가 원하는 액세스가 존재하거나하지 않을 수행하여 다음과 같은 쿼리:

cursorObj.execute('SELECT name from sqlite_master WHERE type = "table" AND name = "employees"')print(cursorObj.fetchall())

경우 직원의 테이블이 존재하고,그것은이 돌아 그 이름을 다음과 같습니다:

경우 테이블이 이름을 우리는 지정된 존재하지 않는 빈 배열이 반환됩:

테이블 삭제

삭제할 수 있습/삭제하려면 테이블을 사용하여 드롭다운 문입니다., 구문의 드롭 다음과 같습니다:

drop table table_name

을 드롭 테이블,테이블에 있어야 하는 데이터베이스입니다. 따라서,그것은 사용을 권장하는 경우에”존재”함께 드롭 문 다음과 같다:

drop table if exists table_name

예를 들어,

SQLite3 예외

예외는 실행 시간에 오류가 있습니다. 파이썬 프로그래밍에서 모든 예외는 BaseException 에서 파생 된 클래스의 인스턴스입니다.,

에 SQLite3,우리는 다음과 같은 주요 Python 예외:

DatabaseError

어떤 오류와 관련된 데이터베이스에 올 DatabaseError.

IntegrityError

IntegrityError 는 DatabaseError 의 하위 클래스이며 데이터 무결성 문제가있을 때 발생합니다. 예를 들어 외래 데이터가 모든 테이블에서 업데이트되지 않아 데이터의 불일치가 발생합니다.

ProgrammingError

제외 ProgrammingError 일이 있을 때는 구문 오류 또는 테이블은 발견되지 않았거나 기능이라고 잘못된 번호를 매개 변수의/arguments.,

OperationalError

이 예외가 발생 할 때 데이터베이스 작업이 실패하는,예를 들어,특이 단절되어 있습니다. 이것은 프로그래머의 잘못이 아닙니다.

NotSupportedError

할 때 사용하는 몇 가지 방법이지 않을 정의하거나 의해 지원되는 데이터베이스에 올릴 것이다 NotSupportedError 예외는 아니다.

SQLite3Executemany(대량 삽입)

executemany 문을 사용하여 한 번에 여러 행을 삽입 할 수 있습니다.

다음 코드를 고려하십시오.

여기서 우리는 두 개의 열이있는 테이블을 만들었고”data”는 각 열에 대해 네 개의 값을 갖습니다., 우리는 쿼리와 함께 executemany()메소드에 변수를 전달합니다.값을 전달하기 위해 자리 표시자를 사용했음을 알 수 있습니다.

위의 코드를 생성합니다 다음과 같은 결과를 얻을 수 있습니다.

이의 연결을 닫

완료되면 데이터베이스와 함께,그것은 좋은 연습을 연결을 닫습니다. Close()메서드를 사용하여 연결을 닫을 수 있습니다.,

을 닫고,연결을 사용하여 연결 객체를 호출 close()메소드는 다음과 같다:

con = sqlite3.connect('mydatabase.db')#program statementscon.close()

SQLite3datetime

에서는 Python SQLite3 데이터베이스에,우리는 쉽게 저장할 수 있습 날 또는 시간을 가져와서 날짜/시간 모듈이 있습니다. 다음과 같은 형식은 가장 일반적인 포맷을 사용할 수 있습 datetime:

YYYY-MM-DDYYYY-MM-DD HH:MMYYYY-MM-DD HH:MM:SSYYYY-MM-DD HH:MM:SS.SSSHH:MMHH:MM:SSHH:MM:SS.SSSnow

다음과 같은 코드를 살펴봅니다:

이 코드에서는,우리는 수입 datetime 모듈은 첫째,우리가 만든 테이블 라는 할당을 가진 세 개의 열이 있습니다.

세 번째 열의 데이터 유형은 날짜입니다., 열에 날짜를 삽입하려면 datetime 을 사용했습니다.날짜. 마찬가지로 datetime 을 사용할 수 있습니다.시간을 처리 할 시간입니다.

위의 코드를 생성되는 출력은 다음과 같습니다.

좋은 유연성과 이동성의 SQLite3 데이터베이스에 그것의 첫번째 선택에 대한 모든 개발자가 사용하고 그것으로 그는 어떤 제품이 작동합니다.

멋진 휴대 성으로 인해 Windows,Linux,Mac OS,Android 및 iOS 프로젝트에서 SQLite3 데이터베이스를 사용할 수 있습니다. 그래서 당신은 당신의 프로젝트와 함께 하나의 파일을 발송하고 그게 전부입니다.

튜토리얼이 유용하기를 바랍니다., 계속 돌아온다.

감사합니다.

Ayesha 타리크 전체 스택 소프트웨어 엔지니어,웹 개발자 및 블록체인 개발자니다. 그녀는 c/C++,Java,Kotlin,Python 및 기타 다양한 지식을 보유하고 있습니다.나는 이것을 할 수 없다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다