Golang SQLite 예제

Golang Sqlite Yeje



Golang은 오픈 소스 프로그래밍 언어입니다. 다양한 유형의 데이터베이스 도구를 지원합니다. SQLite는 널리 사용되는 관계형 데이터베이스 엔진이며 Golang에는 SQLite 데이터베이스와 연결하고 다양한 유형의 데이터베이스 작업을 수행하는 데 사용할 수 있는 데이터베이스/SQL 패키지가 있습니다. SQLite 데이터베이스와 연결하고 테이블 생성, 테이블에 레코드 삽입, 테이블에서 데이터 읽기, 테이블 데이터 업데이트 및 테이블에서 레코드 삭제와 같은 다양한 유형의 데이터베이스 작업을 수행하는 방법이 표시됩니다. 이 자습서에서는 Golang 스크립트를 사용합니다.

전제 조건:

이 자습서의 예제를 연습하기 전에 다음 작업을 완료해야 합니다.

A. 이전에 Golang 언어가 설치되어 있지 않은 경우 시스템에 Golang 언어를 설치합니다. 다음 명령을 실행하여 설치된 Golang 버전을 확인합니다.







$ 이동 버전



B. 이전에 설치되지 않은 경우 시스템에 sqlite3를 설치합니다. Sqlite3는 기본적으로 Ubuntu 20+에 설치됩니다. 다음 명령을 실행하여 설치된 sqlite3 버전을 확인하십시오.



$ sqlite3 --버전





C. 다음 명령을 실행하여 'golang-sqlite'라는 폴더를 만들고 SQLite 데이터베이스 파일과 Golang 파일이 저장될 폴더로 이동합니다.

$ mkdir golang-sqlite
$ cd golang-sqlite

D. 다음 명령을 실행하여 SQLite를 Golang과 함께 사용하는 데 필요한 Golang 패키지를 다운로드합니다.



$ go get github.com/mattn/go-sqlite3

Golang 및 SQLite를 사용한 데이터베이스 작업

SQLite 데이터베이스와 Golang 스크립트를 사용하는 기본 데이터베이스 작업은 이 자습서에 나와 있습니다. 이 자습서에서 다루는 데이터베이스 작업 목록은 다음과 같습니다.

  1. SQLite 데이터베이스 생성
  2. SQLite 데이터베이스 연결 만들기
  3. 새 테이블 만들기
  4. 테이블에 데이터 삽입
  5. 테이블에서 데이터 읽기
  6. 테이블 데이터 업데이트
  7. 테이블에서 데이터 삭제

Golang을 사용하여 SQLite 데이터베이스 생성

'test.db'라는 새 SQLite 데이터베이스 파일을 생성하는 다음 스크립트를 사용하여 Golang 파일을 생성합니다. 4개의 모듈을 스크립트로 가져옵니다. 'fmt' 모듈은 터미널에서 출력을 인쇄하는 데 사용됩니다. '로그' 모듈은 오류가 나타날 때 프로그램을 중단하는 데 사용됩니다. 'os' 모듈은 SQLite 데이터베이스를 생성하고 오류를 처리하는 데 사용됩니다. 'go-sqlite3' 모듈은 Golang을 통해 SQLite 데이터베이스와 연결하는 데 사용됩니다. 여기서 'os' 모듈의 Create() 메서드는 SQLite 데이터베이스를 생성하는 데 사용됩니다. 데이터베이스가 성공적으로 생성되면 터미널에 성공 메시지가 출력됩니다. 그렇지 않으면 프로그램이 종료됩니다. Close() 메서드는 데이터베이스 연결을 닫기 위해 호출됩니다.

패키지 기본

//필요한 모듈 가져오기
수입 (
'fmt'
'통나무'
'너'
_ 'github.com/mattn/go-sqlite3'
)

기능 기본 () {

//새 SQLite 데이터베이스 생성
DB , 잘못 := . 만들다 ( '테스트.db' )
//오류가 있는지 확인
만약에 잘못 != {
//오류 메시지를 로그에 추가
통나무 . 치명적인 ( 잘못 )
} 또 다른 {
//성공 메시지 출력
fmt . Println ( '데이터베이스가 생성되었습니다.' )
}
//데이터베이스 연결을 닫습니다.
DB . 닫다 ()
}

다음 명령을 실행하여 'db_connect.go' 파일을 실행합니다.

$ db_connect.go 실행

'ls' 명령을 실행하여 'test.db' 데이터베이스 파일이 생성되었는지 여부를 확인합니다.

$ ls

다음 출력은 출력에 'Database is created'라는 성공 메시지가 출력되고 현재 위치에 'test.db' 파일이 생성되었음을 보여줍니다.

Golang을 사용하여 SQLite 데이터베이스에 연결

'test.db' 데이터베이스 파일을 열고 데이터베이스와 연결하는 다음 스크립트를 사용하여 Golang 파일을 만듭니다. 이 작업을 수행하기 위해 Golang의 데이터베이스/SQL 모듈을 여기로 가져옵니다. 여기서는 open() 메서드를 사용하여 기존 SQLite 데이터베이스와 연결합니다. 데이터베이스가 성공적으로 연결되면 성공 메시지가 터미널에 출력됩니다. 그렇지 않으면 프로그램이 종료됩니다.

패키지 기본

//필요한 모듈 가져오기
수입 (
'fmt'
'통나무'
'데이터베이스/SQL'
_ 'github.com/mattn/go-sqlite3'
)

기능 기본 () {

//새 SQLite 데이터베이스 생성
DB , 잘못 := SQL . 열려 있는 ( 'sqlite3' , '테스트.db' )
//오류가 있는지 확인
만약에 잘못 != {
//오류 메시지를 로그에 추가
통나무 . 치명적인 ( 잘못 )
} 또 다른 {
//성공 메시지 출력
fmt . Println ( '데이터베이스가 성공적으로 연결되었습니다.' )
}
//데이터베이스 연결을 닫습니다.
DB . 닫다 ()
}

다음 명령을 실행하여 'db_connect2.go' 파일을 실행합니다.

$ db_connect2.go 실행

다음 출력은 'test.db' 데이터베이스 파일이 열리고 성공적으로 연결되었음을 보여줍니다. '데이터베이스가 성공적으로 연결되었습니다'라는 성공 메시지가 출력에 인쇄됩니다.

Golang을 사용하여 SQLite 데이터베이스에 테이블 생성

'test.db' 데이터베이스 파일 내에 'members'라는 데이터베이스 테이블을 생성하는 다음 스크립트를 사용하여 Golang 파일을 생성합니다. 여기서 Exec() 메서드는 6개의 필드와 기본 키가 있는 '구성원' 테이블을 생성하는 CREATE TABLE 쿼리를 실행하는 데 사용됩니다. 데이터베이스에 테이블이 성공적으로 생성되면 성공 메시지가 출력됩니다. 그렇지 않으면 프로그램이 종료됩니다.

패키지 기본

//필요한 모듈 가져오기
수입 (
'fmt'
'통나무'
'데이터베이스/SQL'
_ 'github.com/mattn/go-sqlite3'
)

기능 기본 () {

// 새로운 sqlite 데이터베이스 생성
DB , 잘못 := SQL . 열려 있는 ( 'sqlite3' , '테스트.db' )
//오류가 있는지 확인
만약에 잘못 != {
//오류 메시지를 로그에 추가
통나무 . 치명적인 ( 잘못 )
} 또 다른 {
const 질문 = `
존재하지 않는 경우 테이블 만들기 구성원(
id INTEGER NOT NULL 기본 키,
이름 CHAR(40) NOT NULL,
mtype CHAR(100) NOT NULL,
이메일 CHAR(50),
주소 TEXT NOT NULL,
모바일 CHAR(25) NOT NULL);`

_ , 잘못 := DB . 집행관 ( 질문 );

만약에 잘못 != {
//오류 메시지를 로그에 추가
통나무 . 치명적인 ( 잘못 )
} 또 다른 {
//성공 메시지 출력
fmt . Println ( '테이블이 성공적으로 생성되었습니다.' )
}

}
//데이터베이스 연결을 닫습니다.
DB . 닫다 ()
}

다음 명령을 실행하여 'create_table.go' 파일을 실행합니다.

$ go 실행 create_table.go

다음 출력은 데이터베이스에서 테이블이 성공적으로 생성되었음을 보여줍니다. 성공 메시지 '테이블이 성공적으로 생성되었습니다'가 터미널에 출력됩니다.

SQLite에 로그인하여 데이터베이스에 테이블이 생성되었는지 여부를 확인할 수 있습니다.

'test.db' 데이터베이스로 SQLite를 실행하려면 다음 명령을 실행하십시오.

$ sqlite3 test.db

SQLite 명령 프롬프트에서 '.tables' SQLite 명령을 실행하여 데이터베이스의 테이블 이름을 확인합니다.

sqlite3 > .테이블

다음 출력은 데이터베이스에 Golang 스크립트를 실행하여 생성된 '구성원' 테이블이 포함되어 있음을 보여줍니다.

Golang을 사용하여 SQLite 테이블에 레코드 삽입

INSERT 쿼리를 여러 번 실행하거나 단일 INSERT 쿼리에 여러 값을 추가하여 여러 레코드를 테이블에 삽입할 수 있습니다. 단일 INSERT 쿼리를 사용하여 'test.db' 데이터베이스 파일의 'members' 테이블에 세 개의 레코드를 삽입하는 다음 스크립트로 Golang 파일을 만듭니다. 여기서는 Exec() 메서드를 사용하여 INSERT 쿼리를 실행합니다. 레코드가 테이블에 성공적으로 삽입되면 성공 메시지가 출력됩니다. 그렇지 않으면 프로그램이 종료됩니다.

패키지 기본

//필요한 모듈 가져오기
수입 (
'fmt'
'통나무'
'데이터베이스/SQL'
_ 'github.com/mattn/go-sqlite3'
)

기능 기본 () {

//새 SQLite 데이터베이스 생성
DB , 잘못 := SQL . 열려 있는 ( 'sqlite3' , '테스트.db' )
//오류가 있는지 확인
만약에 잘못 != {
//오류 메시지를 로그에 추가
통나무 . 치명적인 ( 잘못 )
} 또 다른 {
const 질문 = `
INSERT INTO 회원(ID, 이름, mtype, 이메일, 주소, 모바일)
VALUES(1, '네할 아메드', '실버', 'nehal@gmail.com','36, Dhanmondi 2, Dhaka','01844657342'),
(2, 'Abir Chowdhury', 'Gold', 'abir@gmail.com','102, Mirpur 10, Dhaka','01994563423'),
(3, 'Mirza Abbas', 'Silver', 'abbas@gmail.com','12, Jigatala, Dhaka','01640006710');`


//쿼리 실행
_ , 잘못 := DB . 집행관 ( 질문 );

만약에 잘못 != {
//오류 메시지를 로그에 추가
통나무 . 치명적인 ( 잘못 )
} 또 다른 {
//성공 메시지 출력
fmt . Println ( '레코드가 성공적으로 삽입되었습니다.' )
}
}

//데이터베이스 연결을 닫습니다.
DB . 닫다 ()
}

다음 명령을 실행하여 'insert_table.go' 파일을 실행합니다.

$ go 실행 insert_table.go

다음 출력은 레코드가 테이블에 성공적으로 삽입되었음을 보여줍니다. 성공 메시지 '레코드가 성공적으로 삽입되었습니다'가 출력에 인쇄됩니다.

SQLite에 로그인하여 'members' 테이블에 세 개의 레코드가 성공적으로 삽입되었는지 여부를 확인할 수 있습니다.

'test.db' 데이터베이스로 SQLite를 실행하려면 다음 명령을 실행하십시오.

$ sqlite3 test.db

다음 SELECT 쿼리를 실행하여 'members' 테이블의 모든 콘텐츠를 읽습니다.

sqlite3 > 선택 * 회원으로부터 ;

다음 출력은 'members' 테이블에 Golang 스크립트에 의해 삽입된 세 개의 레코드가 포함되어 있음을 보여줍니다.

Golang을 사용하여 SQLite 테이블의 데이터 읽기

'구성원' 테이블의 레코드를 읽는 다음 스크립트로 Golang 파일을 만듭니다. SELECT 쿼리에서 반환된 값을 저장하려면 Golang에서 변수를 정의해야 합니다. 이 스크립트에서는 SELECT 쿼리를 사용하여 '구성원' 테이블에서 5개의 필드를 검색합니다. 따라서 'mtype' 필드의 값이 'Silver'인 'members' 테이블의 5개 필드 값을 저장하기 위해 스크립트에 5개의 변수가 정의되어 있습니다. 여기서는 Query() 메서드를 사용하여 SELECT 쿼리를 실행합니다. 다음으로 'for' 루프는 SELECT 쿼리에 의해 반환된 결과 집합을 읽는 데 사용됩니다. printf() 함수는 결과 세트의 형식화된 값을 인쇄하는 데 사용됩니다.

패키지 기본

//필요한 모듈 가져오기
수입 (
'fmt'
'통나무'
'데이터베이스/SQL'
_ 'github.com/mattn/go-sqlite3'
)

기능 기본 () {

//새 SQLite 데이터베이스 생성
DB , 잘못 := SQL . 열려 있는 ( 'sqlite3' , '테스트.db' )

//오류가 있는지 확인
만약에 잘못 != {
//오류 메시지를 로그에 추가
통나무 . 치명적인 ( 잘못 )
} 또 다른 {

//행 값을 저장할 변수 선언
~였다 ID 정수
~였다 이름
~였다 mtype
~였다 주소
~였다 이동하는
const 질문 = `ID, 이름, mtype, 주소, 모바일 선택
회원으로부터
WHERE mtype = '실버';`


//쿼리 실행
, 잘못 := DB . 질문 ( 질문 );

만약에 잘못 != {
//오류 메시지를 로그에 추가
통나무 . 치명적인 ( 잘못 )
} 또 다른 {

//성공 메시지 출력
fmt . Println ( '모든 실버 회원의 기록:' )
fmt . Println ( 'ID \티 이름 \티 \티 회원 유형 \티 주소 \티 \티 연락처' )
~을 위한 . 다음 () {
. 주사 ( &ID , &이름 , &mtype , &주소 , &이동하는 )
fmt . Printf ( '%디 \티 %에스 \티 %에스 \티 %에스 \티 %에스 \N ' , ID , 이름 , mtype , 주소 , 이동하는 )
}
}
}
//데이터베이스 연결을 닫습니다.
DB . 닫다 ()
}

다음 명령을 실행하여 'select_table.go' 파일을 실행합니다.

$ go 실행 select_table.go

'mtype' 필드에 'Silver'가 포함된 'members' 테이블에 두 개의 레코드가 있습니다. 다음 출력은 SELECT 쿼리에서 반환되는 '구성원' 테이블의 두 레코드를 보여줍니다.

Golang을 사용하여 SQLite 테이블의 데이터 업데이트

id 값이 2인 'members' 테이블의 모바일 필드 값을 변경하는 다음 스크립트를 사용하여 Golang 파일을 생성합니다. 여기서 Exec() 메서드는 UPDATE 쿼리를 실행하는 데 사용됩니다. 레코드가 테이블에서 성공적으로 업데이트되면 성공 메시지가 인쇄됩니다. 그렇지 않으면 프로그램이 종료됩니다.

패키지 기본

//필요한 모듈 가져오기
수입 (
'fmt'
'통나무'
'데이터베이스/SQL'
_ 'github.com/mattn/go-sqlite3'
)

기능 기본 () {

//새 SQLite 데이터베이스 생성
DB , 잘못 := SQL . 열려 있는 ( 'sqlite3' , '테스트.db' )
//오류가 있는지 확인
만약에 잘못 != {
//오류 메시지를 로그에 추가
통나무 . 치명적인 ( 잘못 )
} 또 다른 {
const 질문 = `
업데이트 멤버 SET 모바일 = '018563452390' WHERE id = 2;`

_ , 잘못 := DB . 집행관 ( 질문 );

만약에 잘못 != {
//오류 메시지를 로그에 추가
통나무 . 치명적인 ( 잘못 )
} 또 다른 {
//성공 메시지 출력
fmt . Println ( '레코드가 성공적으로 업데이트되었습니다.' )
}
}
//데이터베이스 연결을 닫습니다.
DB . 닫다 ()
}

다음 명령을 실행하여 'update_table.go' 파일을 실행합니다.

$ 가서 update_table.go 실행

'members' 테이블에서 두 번째 행에는 id 값 2가 포함됩니다. 다음 출력은 테이블의 레코드가 성공적으로 업데이트되었음을 ​​보여줍니다. '레코드가 성공적으로 업데이트되었습니다'라는 성공 메시지가 터미널에 출력됩니다.

SQLite에 로그인하여 구성원 테이블의 레코드가 업데이트되었는지 여부를 확인할 수 있습니다.

'test.db' 데이터베이스로 SQLite를 실행하려면 다음 명령을 실행하십시오.

$ sqlite3 test.db

다음 SELECT 쿼리를 실행하여 'members' 테이블의 모든 콘텐츠를 읽습니다.

sqlite3 > 선택 * 회원으로부터 ;

2차 모바일 분야의 가치 스크립트를 실행하기 전에 구성원 테이블의 레코드는 '01994563423'입니다. 다음 출력은 2의 모바일 필드 값을 보여줍니다. 스크립트 실행 후 구성원 테이블의 레코드가 '018563452390'으로 변경됩니다.

Golang을 사용하여 SQLite 테이블의 데이터 삭제

3을 삭제하는 다음 스크립트로 Golang 파일을 만듭니다. id 값이 3인 '구성원' 테이블의 레코드. 여기에서 Exec() 메서드는 DELETE 쿼리를 실행하는 데 사용됩니다. 레코드가 테이블에서 성공적으로 삭제되면 성공 메시지가 출력됩니다. 그렇지 않으면 프로그램이 종료됩니다.

패키지 기본

//필요한 모듈 가져오기
수입 (
'fmt'
'통나무'
'데이터베이스/SQL'
_ 'github.com/mattn/go-sqlite3'
)

기능 기본 () {

//새 SQLite 데이터베이스 생성
DB , 잘못 := SQL . 열려 있는 ( 'sqlite3' , '테스트.db' )
//오류가 있는지 확인
만약에 잘못 != {
//오류 메시지를 로그에 추가
통나무 . 치명적인 ( 잘못 )
} 또 다른 {
//삭제 쿼리 정의
const 질문 = `ID가 3인 구성원에서 삭제;`
//쿼리 실행
_ , 잘못 := DB . 집행관 ( 질문 );

만약에 잘못 != {
//오류 메시지를 로그에 추가
통나무 . 치명적인 ( 잘못 )
} 또 다른 {
//성공 메시지 출력
fmt . Println ( '레코드가 성공적으로 삭제되었습니다.' )
}
}
//데이터베이스 연결을 닫습니다.
DB . 닫다 ()
}

다음 명령을 실행하여 'delete_table.go' 파일을 실행합니다.

$ go 실행 delete_table.go

다음 출력은 3 '구성원' 테이블의 레코드가 성공적으로 삭제되었습니다. 터미널에 '레코드가 성공적으로 삭제되었습니다'라는 성공 메시지가 출력됩니다.

SQLite에 로그인하여 구성원 테이블의 레코드가 삭제되었는지 여부를 확인할 수 있습니다.

'test.db' 데이터베이스로 SQLite를 실행하려면 다음 명령을 실행하십시오.

$ sqlite3 test.db

다음 SELECT 쿼리를 실행하여 'members' 테이블의 모든 콘텐츠를 읽습니다.

sqlite3 > 선택 * 회원으로부터 ;

다음 출력은 3의 값을 보여줍니다. 구성원 테이블의 레코드는 스크립트 실행 후 삭제되고 다른 두 레코드는 출력에 인쇄됩니다.

결론

SQLite와 Golang은 모두 단순성과 경량 기능으로 인해 현재 인기가 있습니다. 간단한 데이터베이스 기반 응용 프로그램은 이러한 도구를 사용하여 쉽게 구현할 수 있습니다. 모든 응용 프로그램의 주요 부분은 CRUD 작업을 구현하는 것입니다. Golang 스크립트와 SQLite 데이터베이스를 사용하여 CRUD 작업을 구현하는 방법은 이 자습서에서 여러 Golang 파일을 사용하여 설명합니다. Go 언어와 SQLite 데이터베이스의 새로운 학습자라면 이 튜토리얼이 기초부터 학습하는 데 도움이 될 것입니다.