■ 날짜/시간을 처리하는 방법을 보여준다. ▶ 테스트 테이블 (SQL)
|
CREATE TABLE item ( item_id INTEGER NOT NULL PRIMARY KEY, item_name VARCHAR (100) NOT NULL, purchase_time TIMESTAMP NOT NULL, price INTEGER NOT NULL ); |
▶ 예제 코드 (PY)
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 29 30 31 32
|
import datetime import psycopg2 connection = psycopg2.connect(host = "192.168.29.118", port = "5432", database = "testdb", user = "testuser1", password = "test1234") cursor = connection.cursor() cursor.execute("DELETE FROM item;") cursor.execute( "INSERT INTO item (item_id, item_name, purchase_time, price) VALUES (%s, %s, %s, %s)", (12, "Keyboard", datetime.datetime.now(), 150) ) connection.commit() cursor.execute("SELECT purchase_time from item where item_id = 12") purchaseTime = cursor.fetchone() print("항목 구매 일자 :", purchaseTime[0].date()) print("항목 구매 시간 :", purchaseTime[0].time()) cursor.close() connection.close() """ 항목 구매 일자 : 2024-06-01 항목 구매 시간 : 00:58:33.167324 """ |
▶ requirements.txt
■ Cursor 클래스의 rowcount 속성을 사용해 데이터 처리 건수를 구하는 방법을 보여준다. ▶ 테스트 테이블 (SQL)
|
CREATE TABLE test ( ID INTEGER PRIMARY KEY, NAME VARCHAR, AGE INTEGER ); |
▶ 예제 코드 (PY)
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
import psycopg2 from psycopg2 import Error try: connection = psycopg2.connect(host = "192.168.29.118", port = "5432", database = "testdb", user = "testuser1", password = "test1234") cursor = connection.cursor() cursor.execute("DELETE FROM test") print(f"삭제 : {cursor.rowcount}건") cursor.execute("INSERT INTO test (id, name, age) VALUES (1, '홍길동', 20)") print(f"추가 : {cursor.rowcount}건") cursor.execute("INSERT INTO test (id, name, age) VALUES (2, '김철수', 30)") print(f"추가 : {cursor.rowcount}건") cursor.execute("INSERT INTO test (id, name, age) VALUES (3, '이영희', 25)") print(f"추가 : {cursor.rowcount}건") connection.commit() print("트랜잭션이 완료되었습니다.") except (Exception, Error) as error: connection.rollback() print("트랜잭션이 취소되었습니다.") print(f"PostgreSQL 연결시 에러가 발생했습니다 : {error}") finally: if connection: cursor.close() connection.close() print("PostgreSQL 연결이 종료되었습니다.") |
더 읽기
■ PYTHON과 POSTGRESQL 데이터베이스 데이터 타입 관계에 대해 보여준다. ▶ 표
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
========================================== Python PostgreSQL ========== ============================== None NULL bool bool float real, double int smallint, integer, bigint Decimal numeric str varchar, text date date time time, timetz datetime timestampe, timestamptz timedelta interval list ARRAY tuple Compositie types, IN syntax dict hstore ========================================== |
■ Connecton 클래스의 commit/rollback 메소드를 사용해 트랜잭션을 처리하는 방법을 보여준다. ▶ 테스트 테이블 (SQL)
|
CREATE TABLE test ( ID INTEGER PRIMARY KEY, NAME VARCHAR, AGE INTEGER ); |
▶ 예제 코드 (PY)
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 29 30 31 32 33
|
import psycopg2 from psycopg2 import Error try: connection = psycopg2.connect(host = "192.168.29.118", port = "5432", database = "testdb", user = "testuser1", password = "test1234") cursor = connection.cursor() cursor.execute("DELETE FROM test") cursor.execute("INSERT INTO test (id, name, age) VALUES (1, '홍길동', 20)") cursor.execute("INSERT INTO test (id, name, age) VALUES (2, '김철수', 30)") cursor.execute("INSERT INTO test (id, name, age) VALUES (3, '이영희', 25)") connection.commit() print("트랜잭션이 완료되었습니다.") except (Exception, Error) as error: connection.rollback() print("트랜잭션이 취소되었습니다.") print(f"PostgreSQL 연결시 에러가 발생했습니다 : {error}") finally: if connection: cursor.close() connection.close() print("PostgreSQL 연결이 종료되었습니다.") |
▶ requirements.txt
더 읽기
■ Cursor 클래스의 execute/fetchone 메소드를 사용해 데이터베이스 버전을 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
import psycopg2 connection = psycopg2.connect(host = "192.168.29.118", port = "5432", database = "testdb", user = "testuser1", password = "test1234") cursor = connection.cursor() cursor.execute("SELECT version();") versionString = cursor.fetchone() print(f"PostgreSQL 버전 : {versionString}") cursor.close() connection.close() """ PostgreSQL 버전 : ('PostgreSQL 11.10, compiled by Visual C++ build 1914, 64-bit',) """ |
▶ requirements.txt
■ Connection 클래스의 get_dsn_parameters 메소드를 사용해 DSN 매개 변수를 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
import psycopg2 connection = psycopg2.connect(host = "192.168.29.118", port = "5432", database = "testdb", user = "testuser1", password = "test1234") cursor = connection.cursor() print("=" * 100) print(connection.get_dsn_parameters()) print("=" * 100) print() cursor.close() connection.close() """ ==================================================================================================== {'user': 'testuser1', 'channel_binding': 'prefer', 'dbname': 'testdb', 'host': '192.168.29.118', 'port': '5432', 'options': '', 'sslmode': 'prefer', 'sslcompression': '0', 'sslcertmode': 'allow', 'sslsni': '1', 'ssl_min_protocol_version': 'TLSv1.2', 'gssencmode': 'prefer', 'krbsrvname': 'postgres', 'gssdelegation': '0', 'target_session_attrs': 'any', 'load_balance_hosts': 'disable'} ==================================================================================================== """ |
▶ requirements.txt
■ connect 함수를 사용해 데이터베이스에 연결하는 방법을 보여준다. ▶ 예제 코드 1 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
import psycopg2 with psycopg2.connect(host = "192.168.29.118", port = "5432", database = "testdb", user = "testuser1", password = "test1234") as connection: with connection.cursor() as cursor: cursor.execute("SELECT * FROM test;") resultList = cursor.fetchall() for result in resultList: print(result) """ (1, '홍길동', 20) (2, '김철수', 30) (3, '이영희', 25) """ |
▶ 예제 코드 2 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
import psycopg2 with psycopg2.connect("host='192.168.29.118' dbname='testdb' user='testuser1' password='test1234'") as connection: with connection.cursor() as cursor: cursor.execute("SELECT * FROM test;") resultList = cursor.fetchall() for result in resultList: print(result) """ (1, '홍길동', 20) (2, '김철수', 30) (3, '이영희', 25) """ |
▶ requirements.txt
더 읽기
■ execute_values 함수를 사용해 BULK INSERT를 처리하는 방법을 보여준다. ▶ 테스트 테이블 (SQL)
|
CREATE TABLE test ( ID INTEGER PRIMARY KEY, NAME VARCHAR, AGE INTEGER ); |
▶ 예제 코드 (PY)
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 29
|
import psycopg2 import psycopg2.extras with psycopg2.connect("host='192.168.29.118' dbname='testdb' user='testuser1' password='test1234'") as connection: with connection.cursor() as cursor: cursor.execute("DELETE FROM test") psycopg2.extras.execute_values( cursor, "INSERT INTO test (id, name, age) VALUES %s;", [(1, '홍길동', 20), (2, '김철수', 30), (3,'이영희', 25)] ) connection.commit() cursor.execute("SELECT * FROM test") resultList = cursor.fetchall() for result in resultList: print(result) """ (1, '홍길동', 20) (2, '김철수', 30) (3, '이영희', 25) """ |
▶ requirements.txt
■ execute_batch 함수를 사용해 BULK INSERT를 처리하는 방법을 보여준다. ▶ 테스트 테이블 (SQL)
|
CREATE TABLE test ( ID INTEGER PRIMARY KEY, NAME VARCHAR, AGE INTEGER ); |
▶ 예제 코드 (PY)
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 29
|
import psycopg2 import psycopg2.extras with psycopg2.connect("host='192.168.29.118' dbname='testdb' user='testuser1' password='test1234'") as connection: with connection.cursor() as cursor: cursor.execute("DELETE FROM test") psycopg2.extras.execute_batch( cursor, "INSERT INTO test (id, name, age) VALUES (%s, %s, %s);", [(1, '홍길동', 20), (2, '김철수', 30), (3,'이영희', 25)] ) connection.commit() cursor.execute("SELECT * FROM test") resultList = cursor.fetchall() for result in resultList: print(result) """ (1, '홍길동', 20) (2, '김철수', 30) (3, '이영희', 25) """ |
▶ requirements.txt
■ Cursor 클래스의 execute/fetchall 메소드를 사용해 데이터를 조회하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
import psycopg2 with psycopg2.connect("host='192.168.29.118' dbname='testdb' user='testuser1' password='test1234'") as connection: with connection.cursor() as cursor: cursor.execute("SELECT * FROM test") resultList = cursor.fetchall() for result in resultList: print(result) |
▶ requirements.txt
■ with … as … 구문을 사용해 리소스를 자동으로 해제하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
import psycopg2 with psycopg2.connect("host='192.168.29.118' dbname='testdb' user='testuser1' password='test1234'") as connection: with connection.cursor() as cursor: cursor.execute("SELECT * FROM test") resultList = cursor.fetchall() for result in resultList: print(result) |
▶ requirements.txt
■ Cursor 클래스의 execute 메소드를 사용해 데이터를 추가하는 방법을 보여준다. ▶ 테스트 테이블 (SQL)
|
CREATE TABLE test ( ID INTEGER PRIMARY KEY, NAME VARCHAR, AGE INTEGER ); |
▶ 예제 코드 (PY)
|
import psycopg2 connection = psycopg2.connect("host='192.168.29.118' dbname='testdb' user='testuser1' password='test1234'") cursor = connection.cursor() cursor.execute("INSERT INTO test (id, name, age) VALUES (1, '홍길동', 20)") connection.commit() cursor.close() connection.close() |
▶ requirements.txt
더 읽기
■ Cursor 클래스의 execute 메소드를 사용해 테이블을 생성하는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
import psycopg2 connection = psycopg2.connect("host='192.168.29.118' dbname='testdb' user='testuser1' password='test1234'") cursor = connection.cursor() sql = """ CREATE TABLE test ( ID INTEGER PRIMARY KEY, NAME VARCHAR, AGE INTEGER ); """ cursor.execute(sql) connection.commit() cursor.close() connection.close() |
▶ requirements.txt
■ PostgreSQL 데이터베이스를 사용하는 방법을 보여준다. 1. 아래 웹 사이트에서 접속한다. ▶ URL
|
http://www.stickpeople.com/projects/python/win-psycopg/ |
2. 파이썬 버전과 윈도우 32/64비트 버전에 따라 win-psycopg의
더 읽기