목차
WHERE 조건절 - 특정 조건의 데이터만 가져오기
% 와일드카드 - 0개 이상의 임의의 문자 대응
SQL Injection 방지 - %s 자리표시자
WHERE 조건절 - 특정 조건의 데이터만 가져오기
SQL 구문에 WHERE 조건절 추가해 원하는 데이터만 가져옴.
[예제]
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="autoset",
database="hz"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM hz_member WHERE mb_name = 'homzzang'"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
결과값: (1, 'homzzang', '10')
% 와일드카드 - 0개 이상의 임의의 문자 대응
주어진 문자나 구로 시작, 포함 또는 끝나는 레코드를 선택 가능.
0개, 1개 또는 여러 문자를 나타내려면 '% '와일드 카드를 사용.
(예)
h로 시작하는 레코드 : h%
h가 들어가는 레코드 : %h%
h로 종료하는 레코드 : %h
[예제]
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="autoset",
database="hz"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM hz_member WHERE mb_name LIKE 'h%'"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
SQL Injection 방지 - %s 자리표시자
사용자가 쿼리 값 제공 시, 값을 회피 (escape)해야 함.
(※ 회피 : SQL Injection (=해킹) 시도하는 코드를 제거.)
mysql.connector 모듈에는 %s 자리표시자 메서드로 쿼리값 회피.
변수는 cursor 객체의 execute() 메서드의 2번째 매개변수로 전달.
[예제]
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="autoset",
database="hz"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM hz_member WHERE mb_name = %s "
name = ("homzzang", )
mycursor.execute(sql, name)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
PS.
Node.js WHERE 조건절 https://homzzang.com/b/njs-17
주소 복사
랜덤 이동
최신댓글