import pymysql
conn = pymysql.connect(host = '127.0.0.1', user = 사용자, password = 암호, db =데이터베이스,charset = 문자세트)
conn은 연결자를 의미하는 connection의 약자입니다. 다름 이름으로 사용해도 상관은 없지만 대개는 conn 또는 con으로 많이 사용합니다.
pymysql.connect()는 데이터베이스와 파이썬을 연결해줍니다.
cur = conn.cursor()
커서는 데이터베이스에 SQL문을 실행하거나 실행된 결과를 돌려받는 통로입니다. 연결한 연결자에 커서를 만들어야합니다.
테이블을 만드는 SQL 문을 커서이름.execute() 함수의 매개변수로 넘겨주면 SQL 문이 데이터베이스에 실행됩니다.
cur.execute("CREATE TABLE userTable (id char(10), userName char(15), email char(20), birthYear int)")
데이터 입력도 SQL 문을 사용해야 하므로 커서이름.execute() 함수를 사용합니다.
cur.execute("INSERT INTO userTable VALUES ('a342','문동은','a342@naver.com', 1988)")
cur.execute("INSERT INTO userTable VALUES ('juju6','주여정','juju6@naver.com', 1995)")
cur.execute("INSERT INTO userTable VALUES ('yessoul','하예솔','yessoul@naver.com', 2014)")
cur.execute("INSERT INTO userTable VALUES ('2000pick','이사라', '2000pick@naver.com', 1990)")
임시로 저장된 상태로, 이를 확실하게 저장하는 것을 커밋이라고 부릅니다.
conn.commit()
데이터베이스를 모두 사용했다면 연결한 데이터베이스를 닫아야합니다.
데이터베이스를 close()로 닫은 것은 MySQL 워크벤치를 종료하는 것과 비슷한 개념입니다.
conn.close()
MySQL에서 실행해보기
SELECT * FROM userTable;
사용자가 반복해서 데이터를 입력하는 코드를 작성해보겠습니다.
import pymysql
# 전역변수 선언부
conn, cur = None, None
data1, data2, data3, data4 = "","","",""
sql = ""
# 메인 코드
conn = pymysql.connect(host = '127.0.0.1',
user = 사용자, password =암호, db = 데이터베이스 ,charset = 문자세트)
cur = conn.cursor()
while (True) :
data1 = input("사용자 ID ==> ")
if data1 == "" :
break;
data2 = input("사용자 이름 ==> ")
data3 = input("사용자 이메일 ==> ")
data4 = input("사용자 출생년도 ==> ")
sql = "INSERT INTO userTable VALUES(
'" + data1 + "','" + data2 + "','" + data3 + "'," + data4 + "
)"
cur.execute(sql)
conn.commit()
conn.close()
data1 ~ data4는 입력할 사용자 ID, 사용자 이름, 사용자 이메일, 출생연도를 입력받을 변수입니다. INSERT INTO ~ 문을 입력한 data 값과 함께 문자열로 생성할 것입니다.
테이블은 이미 생성되어 있으므로 CREATE TABLE ~ 문은 생략했습니다.
무한 반복하면서 data1 ~ data4를 입력받습니다.
만약 data1에서 아무것도 입력하지 않고 Enter 키를 입력하면 while 문을 빠져나갑니다.
INSERT 문으로 입력한 데이터를 sql 변수에 문자열로 만듭니다. 주의할 점은 data1~ data3은 작은따옴표(')로 묶어야 하고, 마지막 data4는 정수이므로 작은 따옴표로 묶으면 안됩니다.
생성한 문자열을 실행해서 데이터를 입력합니다.
입력한 데이터를 저장하고, 연결된 데이터베이스를 닫습니다.
import pymysql
# 전역변수 선언부
con, cur = None, None
data1, data2, data3, data4 = "","","",""
row = None
#메인 코드
conn = pymysql.connect(host = '127.0.0.1',
user = 사용자, password =암호, db = 데이터베이스 ,charset = 문자세트)
cur = conn.cursor()
cur.execute("SELECT * FROM userTable")
print("사용자ID 사용자이름 이메일 출생연도")
print("-----------------------------------------")
while (True) :
row = cur.fetchone()
if row == None :
break
data1 = row[0]
data2 = row[1]
data3 = row[2]
data4 = row[3]
print("%5s %15s %20s %d" % (data1, data2, data3, data4))
conn.close()
SELECT 문으로 테이블을 조회, 조회한 결과는 cur 변수에 저장됩니다.
fetchone() 함수로 결과를 한 행씩 추출합니다. 이 행은 while 문 안에 있으므로 무한 반복됩니다. 조회한 결과의 모든 행을 추출합니다.
단 조회한 결과가 없으면 None 값을 반환하여 while 문을 빠져나옵니다.
fetchone() 함수로 조회된 결과가 저장된 row 변수에는 튜플 형식으로 각 행 데이터가 저장됩니다.