포스트그레스 골랑

Poseuteugeuleseu Gollang



Golang이라고도 하는 Go는 Google에서 만든 오픈 소스, 컴파일 및 정적으로 유형이 지정된 프로그래밍 언어입니다. 이해하기 쉽고, 빠르고, 명확하고, 고성능으로 제작되었습니다.

간단히 Postgres라고도 하는 PostgreSQL은 강력한 오픈 소스 객체 관계형 데이터베이스 시스템입니다. 30년 이상의 활발한 개발을 통해 견고성, 고급 기능 및 실질적인 표준 준수로 강력한 명성을 얻었습니다.

단일 시스템에서 동시 사용자가 많은 웹 서비스 또는 데이터 웨어하우스에 이르기까지 광범위한 워크로드를 처리하도록 설계되었습니다. 트랜잭션 무결성과 내구성을 제공하고 다양한 고급 데이터 유형과 강력하고 유연한 데이터 조작 언어를 지원합니다.







이 튜토리얼에서는 Go 애플리케이션으로 PostgreSQL 서버를 구성하고 연결하는 방법을 알려줍니다.



요구 사항:

프로그래밍 언어로 이동 – 컴퓨터에 Go 컴파일러가 설치되어 있는지 확인합니다.



PostgreSQL 데이터베이스 – PostgreSQL도 설치되어 있어야 합니다. 컴퓨터에 직접 설치하거나 보다 간단한 설정을 위해 Docker 컨테이너를 사용할 수 있습니다.





개발 도구 – Visual Studio Code, GoLand 등 Go를 지원하는 IDE(Integrated Development Environment)

SQL 및 Go에 대한 기본 지식 – PostgreSQL 데이터베이스와 상호 작용하려면 수행해야 하는 SQL 및 다양한 쿼리를 이해해야 합니다. Go 언어에 대한 기본적인 이해도 필요합니다.



주어진 요구 사항이 충족되면 다음 단계를 진행할 수 있습니다.

프로젝트 설정

프로젝트 디렉토리 구조를 설정하는 것으로 시작하겠습니다. 프로젝트 소스 코드를 저장해야 하는 기본 디렉터리를 만듭니다.

$ mkdir golang_postgres

디렉터리로 이동하여 새 Go 모듈을 초기화합니다.

$ CD golang_postgres && 모드 초기화 메인으로 이동

필요한 드라이버 설치

PostgreSQL 데이터베이스와 상호 작용하려면 Go 프로그래밍 언어용 PostgreSQL 드라이버가 필요합니다.

이 자습서에서는 PostgreSQL 데이터베이스 작업을 위한 다양한 기능을 제공하는 pq 드라이버를 사용합니다.

다음 명령을 실행하여 설치할 수 있습니다.

github.com으로 이동 / 라이브러리 / pq

데이터베이스 생성

다음 단계는 새로운 PostgreSQL 데이터베이스를 생성하는 것입니다. 다시 말하지만 PostgreSQL 셸에서 이 작업을 수행할 수 있습니다.

$ psql -안에 포스트그레스

이 명령은 postgres의 암호를 묻는 메시지를 표시합니다. 기록되면 '데이터베이스 생성' 명령을 실행하여 새 데이터베이스를 초기화합니다.

postgres=# 데이터베이스 생성 golang;
데이터베이스 생성

주어진 명령은 'golang'이라는 새 데이터베이스를 생성합니다. 데이터베이스 이름을 원하는 이름으로 자유롭게 바꾸십시오.

그런 다음 데이터베이스에 연결하여 데이터베이스가 성공적으로 생성되었는지 확인할 수 있습니다.

postgres=# \c golang;
이제 사용자 'postgres'로 데이터베이스 'golang'에 연결되었습니다.

다음으로 데이터를 저장할 테이블을 설정합니다. 세션 정보를 저장하는 이 자습서용 간단한 테이블을 만듭니다.

테이블 생성 db_clients(
ID 직렬 기본 키,
이름 VARCHAR(100) NOT NULL,
session_time 타임스탬프가 NULL이 아님,
number_of_queries INT 기본값 0,
active_state 부울 기본값 거짓
);

주어진 쿼리는 주어진 데이터베이스 서버에 로그인한 클라이언트에 대한 정보를 저장하는 'db_clients'라는 새 테이블을 생성해야 합니다.

Go 앱을 PostgreSQL과 연결

데이터베이스와 데이터베이스 테이블을 설정하고 나면 계속 진행하여 Go 애플리케이션을 PostgreSQL 서버와 연결하는 방법을 배울 수 있습니다.

프로젝트의 루트에 'main.go' 파일을 생성하여 시작합니다.

$ 만지다 main.go

다음으로 선택한 텍스트 편집기로 파일을 편집합니다.

$ 왜냐하면 main.go

“main.go” 파일에서 다음과 같이 소스 코드를 추가합니다.

패키지 메인

수입 (
'데이터베이스/SQL'
'fmt'
'통나무'

_ 'github.com/lib/pq'
)

기능 메인 ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, 오류 := sql.Open ( '포스트그레스' , connStr )
만약에 잘못 ! = 없음 {
로그.치명적 ( 잘못 )
}

만약에 오류 = db.Ping ( ) ; 잘못 ! = 없음 {
로그.치명적 ( 잘못 )
}

fmt.Println ( '데이터베이스에 연결됨' )
}

이전 코드에서는 필요한 모듈을 가져오는 것으로 시작합니다. 그런 다음 기본 기능을 정의합니다. 마지막으로 main 함수에서 대상 호스트, 데이터베이스 사용자, 데이터베이스 암호 및 실제 대상 데이터베이스를 지정할 수 있는 연결 문자열을 정의합니다.

모듈은 연결 문자열에서 다음 매개변수를 지원합니다.

  • dbname – 연결할 데이터베이스의 이름입니다.
  • user – 로그인할 사용자입니다.
  • 암호 – 사용자의 암호입니다.
  • 호스트 – 연결할 호스트입니다. '/'로 시작하는 값은 Unix 도메인 소켓용입니다(기본값은 localhost).
  • port – 바인딩할 포트입니다(기본값은 5432).
  • sslmode – SSL 사용 여부(기본값은 require이며 libpq의 기본값은 아님).
  • fallback_application_name – 제공되지 않은 경우 대체할 application_name입니다.
  • connect_timeout – 연결을 위한 최대 대기 시간(초). 0 또는 지정되지 않음은 무기한 대기를 의미합니다.
  • sslcert – 인증서 파일 위치입니다. 파일에는 PEM 인코딩 데이터가 포함되어야 합니다.
  • sslkey – 키 파일 위치입니다. 파일에는 PEM 인코딩 데이터가 포함되어야 합니다.
  • sslrootcert – 루트 인증서 파일의 위치입니다. 파일에는 PEM 인코딩 데이터가 포함되어야 합니다.

필요에 따라 대상 연결 속성을 구성할 수 있습니다. SSL 및 허용되는 SSLMode 매개변수를 구성하려면 다음 자습서를 확인하십시오. https://linuxhint.com/postgres-sslmode .

연결 속성에 만족하면 이전 코드를 실행하여 연결 설정 여부를 테스트할 수 있습니다.

.\main.go 실행

연결하면 다음과 같은 결과가 표시됩니다.

데이터베이스에 연결됨

PostgreSQL 테이블에 데이터 삽입

다음 단계는 앞에서 만든 테이블에 샘플 데이터를 삽입하는 것입니다. 삽입 쿼리를 문자열 리터럴로 정의한 다음 db.Exec() 함수를 사용하여 대상 쿼리를 실행하면 됩니다.

코드는 다음과 같습니다.

---
insertStatement := `DB_clients에 삽입(이름, session_time, number_of_queries, active_state)
가치
('psql', '2023-05-26 10:15:00', 10, 참),
('데이터그립', '2023-05-26 09:30:00', 5, 참),
('dbeaver', '2023-05-26 11:00:00', 20, 참),
('작업대', '2023-05-26 14:45:00', 15, 거짓),
('원격', '2023-05-26 13:20:00', 8, true);`

_, 오류 = db.Exec(insertStatement)
오류가 있는 경우 != nil {
로그.치명적(err)
}

이전 코드를 실행하면 지정된 레코드를 대상 테이블에 삽입해야 합니다.

PostgreSQL 쿼리 데이터

테이블에서 행을 쿼리하기 위해 select 문을 문자열로 정의하고 db.Query()를 사용하여 실행할 수 있습니다. Next() 함수를 사용하여 테이블 행을 반복하고 다음과 같이 인쇄할 수 있습니다.

행, 오류 := db.Query ( 'db_clients에서 * 선택' )
만약에 잘못 ! = 없음 {
로그.치명적 ( 잘못 )
}
행 연기.닫기 ( )

~을 위한 행.다음 ( ) {
~였다 ID 정수
변수 이름 문자열
var sessionTime 시간.시간
var numberOfQueries int
변수 활성 상태 부울

오류 := 행.스캔 ( & ID , & 이름, & 세션 시간, & 쿼리 수, & 활성 상태 )
만약에 잘못 ! = 없음 {
로그.치명적 ( 잘못 )
}

fmt.Printf ( 'ID: %d, 이름: %s, 세션 시간: %s, 쿼리 수: %d, 활성 상태: %t \N ' , ID , 이름, sessionTime, numberOfQueries, 활성 상태 )
}

만약에 오류 = 행. 오류 ( ) ; 잘못 ! = 없음 {
로그.치명적 ( 잘못 )
}

이전 코드를 실행하면 다음 예제 출력과 같이 db_clients 테이블의 모든 행을 인쇄해야 합니다.

당신은 그것을 가지고 있습니다!

결론

pq 패키지를 사용하여 Golang을 사용하여 PostgreSQL 데이터베이스에 연결하고 쿼리하는 방법을 살펴보았습니다.