코드 전체보기
# 원격 데이터베이스 연동 프로그램
# 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 |