코드 전체보기
# 원격 데이터베이스 연동 프로그램
# pip install mysqlclient
import MySQLdb
# conn = MySQLdb.connect(host = '127.0.0.1', user = 'root', password='123', database='test')
# print(conn)
# conn.close()
# sangdata table과 연동
config = {
'host':'127.0.0.1',
'user':'root',
'password':'123',
'database':'test',
'port':3306,
'charset':'utf8',
'use_unicode':True
}
try:
conn = MySQLdb.connect(**config)
# print(conn)
cursor = conn.cursor()
"""
# insert
# 숫자는 ''처리를 해도 되고 안해도 된다.
# commit을 해야 DB에 저장된다. commit 안하면 임시데이터로 사라진다.
# 해당 예시를 2회 commit할 경우 code primary key로 오류
# sql = "insert into sangdata(code,sang,su,dan) values(10,'신상1',5,'5000')"
# cursor.execute(sql)
sql = "insert into sangdata values(%s,%s,%s,%s)"
sql_data = '11', '아아', 12, 5500
count = cursor.execute(sql, sql_data)
# print(count)
conn.commit()
"""
"""
# update
sql = "update sangdata set sang=%s, su=%s where code=%s"
sql_data = ('파이썬',50,11)
count = cursor.execute(sql,sql_data)
print(count)
conn.commit()
"""
"""
# delete
code = '11'
# secure coding guide에 위배, sql injection 해킹에 취약
# sql = "delete from sangdata where code=" + code
# sql = "delete from sangdata where code='{0}'".format(code)
# cursor.execute(sql)
sql = "delete from sangdata where code=%s"
cursor.execute(sql, (code,))
conn.commit()
"""
# select
sql = "select code,sang,su,dan from sangdata"
cursor.execute(sql)
# 방법1
for data in cursor.fetchall():
# print(data)
print('%s %s %s %s'%data)
# 방법2
print()
for r in cursor:
# print(r)
print(r[0], r[1], r[2], r[3])
# 방법3
# 가독성이 좋음
print()
for (code,sang,su,dan) in cursor:
print(code,sang,su,dan)
# 방법3-1
# 사실 매개변수는 칼럼명일 필요는 없다.
print()
for (a,품명,su,dan) in cursor:
print(a,품명,su,dan)
except Exception as e:
print('err :',e)
finally:
cursor.close()
conn.close()
sql 시작 기본 형태
# 원격 데이터베이스 연동 프로그램
# pip install mysqlclient
import MySQLdb
# conn = MySQLdb.connect(host = '127.0.0.1', user = 'root', password='123', database='test')
# print(conn)
# conn.close()
# sangdata table과 연동
config = {
'host':'127.0.0.1',
'user':'root',
'password':'123',
'database':'test',
'port':3306,
'charset':'utf8',
'use_unicode':True
}
try:
conn = MySQLdb.connect(**config)
# print(conn)
cursor = conn.cursor()
except Exception as e:
print('err :',e)
finally:
cursor.close()
conn.close()
select
# select
sql = "select code,sang,su,dan from sangdata"
cursor.execute(sql)
# 방법1
for data in cursor.fetchall():
# print(data)
print('%s %s %s %s'%data)
# 방법2
print()
for r in cursor:
# print(r)
print(r[0], r[1], r[2], r[3])
# 방법3
# 가독성이 좋음
print()
for (code,sang,su,dan) in cursor:
print(code,sang,su,dan)
# 방법3-1
# 사실 매개변수는 칼럼명일 필요는 없다.
print()
for (a,품명,su,dan) in cursor:
print(a,품명,su,dan)
insert
숫자는 ''처리를 해도 되고 안해도 된다.
commit을 해야 DB에 저장된다. commit 안하면 임시데이터로 사라진다.
해당 예시를 2회 commit할 경우 code primary key로 오류
# insert
# 방법1
sql = "insert into sangdata(code,sang,su,dan) values(10,'신상1',5,'5000')"
cursor.execute(sql)
# 방법2
sql = "insert into sangdata values(%s,%s,%s,%s)"
sql_data = '11', '아아', 12, 5500
count = cursor.execute(sql, sql_data)
# print(count)
conn.commit()
update
# update
sql = "update sangdata set sang=%s, su=%s where code=%s"
sql_data = ('파이썬',50,11)
count = cursor.execute(sql,sql_data)
print(count)
conn.commit()
delete
# delete
code = '11'
# 방법1 비추천
secure coding guide에 위배, sql injection 해킹에 취약
sql = "delete from sangdata where code=" + code
cursor.execute(sql)
# 방법2
sql = "delete from sangdata where code='{0}'".format(code)
cursor.execute(sql)
# 방법3
sql = "delete from sangdata where code=%s"
cursor.execute(sql, (code,))
conn.commit()
'python' 카테고리의 다른 글
socket - 기본 구조 (0) | 2022.10.12 |
---|---|
DB 연결 - 기본 db, sql문 예시 (0) | 2022.10.12 |
DB - sqlite (0) | 2022.10.11 |
file - 파일에서 특정 단어를 포함하는 줄만 출력(주소 출력기) (1) | 2022.10.11 |
file - file + with, pickle (0) | 2022.10.11 |