[파이썬] Psycopg2에서 SQL identifiers 및 literals 인용

Psycopg2는 Python에서 PostgreSQL과 상호 작용할 수 있는 파이썬 데이터베이스 어댑터입니다. Psycopg2를 사용하면 Python 코드를 사용하여 PostgreSQL 쿼리를 실행하고 데이터베이스와 상호 작용할 수 있습니다.

이번 포스트에서는 Psycopg2를 사용하여 SQL identifiers(식별자)와 literals(리터럴)을 쿼리에 인용하는 방법에 대해 알아보겠습니다. SQL identifiers는 데이터베이스 개체의 이름이나 열의 이름과 같은 것을 의미하며, literals는 문자열이나 숫자와 같은 값 자체를 의미합니다.

SQL identifiers 인용

SQL 식별자를 인용하는 방법은 다음과 같습니다:

import psycopg2

conn = psycopg2.connect(dbname='mydatabase', user='myuser', password='mypassword', host='localhost')

cur = conn.cursor()

table_name = 'my_table'

cur.execute(f"SELECT * FROM {psycopg2.sql.Identifier(table_name)}")

위의 예제에서는 psycopg2.sql.Identifier() 함수를 사용하여 table_name 변수를 SQL 식별자로 인용합니다. 이렇게 하면 테이블 이름이나 열 이름에 특수 문자가 포함되어 있을 경우에도 올바르게 처리될 수 있습니다.

SQL literals 인용

SQL 리터럴을 인용하는 방법은 다음과 같습니다:

import psycopg2

conn = psycopg2.connect(dbname='mydatabase', user='myuser', password='mypassword', host='localhost')

cur = conn.cursor()

value = "John Doe"

cur.execute(f"INSERT INTO my_table (name) VALUES ({psycopg2.sql.Literal(value)})")

위의 예제에서는 psycopg2.sql.Literal() 함수를 사용하여 value 변수를 SQL 리터럴로 인용합니다.

주의: SQL 인용을 사용할 때 SQL injection을 방지하기 위해 항상 인용하는 값에 대해 유효성 검사를 수행해야 합니다.

Psycopg2를 사용하여 SQL identifiers와 literals를 인용하는 방법에 대해 알아보았습니다. 이러한 기능은 안정적이고 보안적으로 안전한 PostgreSQL 쿼리 작성을 도와줍니다.