(27) Python_Python과 MySQL의 통합

시작하기 전에 MySQL에 대해 간략하게 이해하는 것이 가장 좋습니다.

MySQL 시작: https://jm-programming./27

(1) MySQL_DBMS

DataBase (Database) Data: Data DataBase: 데이터를 통합하고 관리하는 집계 및 저장 DBMS(Database Management System) 데이터베이스 관리를 위한 소프트웨어

jm-rograming. 홈페이지

1. mysql 클라이언트

  • Python에는 MySQL 서버와 통신할 수 있는 여러 유형의 Python 데이터베이스 커넥터가 있습니다.

  • 가장 일반적으로 사용되는 mysqlclient인 PyMySQL
  • 사용법은 비슷하지만 더 빠른 mysqlclient를 권장합니다.

  • 수입하세요. (!
    pip 설치 mysqlclient)

# 호스트: IP 주소, localhosh, 127.0.0.1
# 사용자: 사용자, 루트
# 암호: 암호, 1234
# DB: 데이터베이스, 테스트

# db = MySQLdb.connect(localhost’,’root’,’1234′,’test’)

MySQLdb 가져오기
db = MySQLdb.connect(호스트 = ‘localhost’, 사용자 = ‘root’, 비밀번호 = ‘1234’, db = ‘test’)

2. 커서 만들기

  • 데이터베이스 연결을 위한 SQL 문을 독립적으로 실행하기 위한 작업 환경을 제공하는 객체
  • 하나의 연결은 동시에 하나의 커서만 생성할 수 있으며 커서를 통해 SQL 문을 실행하면 튜플 단위로 실행 결과를 반환한다.

cur = db.cursor()
sql = ‘회원의 사용자 ID, 사용자 이름, HP, 이메일, 성별 선택’
현재 실행(sql)
# cur.execute(”회원의 사용자 ID, 사용자 이름, HP, 이메일, 성별 선택”)

결과: 테이블에 6개의 원시가 있으므로 결과는 6입니다.

3. SQL 문의 결과 가져오기

  • fetchall(): 한 번에 모든 튜플(행)을 가져옵니다.

    검색 결과가 매우 큰 경우 메모리 오버헤드가 발생할 수 있음
  • fetchone(): 한 번에 하나의 튜플을 가져옵니다.

    메소드를 다시 호출하면 다음 데이터를 가져옵니다.

row = cur.fetchall()
인쇄(라인)


현재 실행(sql)
row = cur.fetchone()
인쇄(라인)


# fetchone()을 반복하고 모든 데이터를 출력합니다.


현재 실행(sql)

사실:
row = cur.fetchone()
확인하는 경우:
인쇄(라인)
다른:
나머지


# 커서의 사전 형식 행을 보존하기 위해 내부 유형을 지정합니다.


cur = db.cursor(MySQLdb.cursors.DictCursor) # 사전의 각 요소를 검색할 때 사용
현재 실행(sql)

사실:
row = cur.fetchone()
확인하는 경우:
print(f “ID: {row(‘userid’)}, 이름: {row(‘username’)}, 전화번호: {row(‘hp’)}, 이메일: {row(’email’)}, 성별: {줄(‘성별’)}”)
다른:
나머지


4. 커서와 연결을 닫습니다.

cur.close() # 커서 닫기
db.close() # 연결을 닫습니다.

5. 데이터 삽입

  • execute()를 사용하여 단일 튜플 삽입

sql = “구성원(userid,userpw,username,hp,email,gender,ssn1,ssn2) 값(%s,%s,%s,%s,%s,%s,%s,%s) 삽입”
데이터 = (‘아보카도’,’0000′,’앙카도’,’010-0000-0000′,’아보카도@이메일’,’남자’,’000000′,’0000000′)
cur.execute(sql, data) # SQL을 실행하고 데이터를 %s에 삽입
데이터베이스제출()

  • 여러 튜플을 삽입할 때 executemany()를 사용합니다.

sql = “구성원(userid,userpw,username,hp,email,gender,ssn1,ssn2) 값(%s,%s,%s,%s,%s,%s,%s,%s) 삽입”
데이터 = ((‘망고’,’0000′,’망고’,’010-0000-0000′,’mango@email’,’남자’,’000000′,’0000000′),
(‘복숭아’,’0000′,’복숭아’,’010-0000-0000′,’peach@email’,’여자’,’000000′,’0000000′))
cur.executemany(sql, 데이터)
데이터베이스제출()

질문

  • “회원가입” 절차를 만들자
  • 회원가입
  • 아이디를 입력해주세요:
  • 비밀번호를 입력 해주세요:
  • 당신의 이름을 입력 해주세요:
  • 전화번호를 입력하세요:
  • 이메일을 입력하세요:
  • 성별을 입력하세요.
  • 사회 보장 번호의 첫 번째 숫자를 입력하십시오:
  • 사회 보장 번호의 마지막 숫자를 입력하십시오:
  • 당신의 우편 번호를 입력 해주세요:
  • 주소를 입력하세요:
  • 자세한 주소를 입력하세요:
  • 비고 사항을 입력하십시오:

MySQLdb 가져오기

db = MySQLdb.connect(‘localhost’,’루트’,’1234′,’테스트’)
cur = db.cursor()

사실:
노력하다:
userid = input(‘아이디를 입력하세요:’)
userpw = input(‘비밀번호를 입력하세요:’)
username = input(‘이름을 입력하세요:’)
hp = input(‘전화번호를 입력하세요:’)
email = input(‘이메일을 입력하세요:’)
gender = input(‘성별을 입력하세요:’)
ssn1 = input(‘주민등록번호의 첫 번째 숫자를 입력하세요:’)
ssn2 = input(‘주민등록번호의 마지막 숫자를 입력하세요:’)
zipcode = input(‘우편번호를 입력하세요:’)
address1 = input(‘주소를 입력하세요:’)
address2 = input(‘자세한 주소를 입력하세요:’)
address3 = input(‘메모를 입력하세요:’)

sql = “멤버(userid,userpw,username,hp,email,gender,ssn1,ssn2,zipcode,address1,address2,address3) values(%s,%s,%s,%s,%s,%s에 삽입 ,%s,%s,%s,%s,%s,%s)”
데이터 = (userid,userpw,username,hp,email,gender,ssn1,ssn2,zipcode,address1,address2,address3)
current_execution(sql, 데이터)
데이터베이스제출()
print(‘등록이 완료되었습니다.

’)

나머지

와는 별개로:
print(‘정보를 다시 입력해주세요’)

cur.close()
데이터베이스닫기()


  • 데이터베이스 테이블을 확인하면 올바르게 입력되었는지 확인할 수 있습니다.

6. 데이터 편집

MySQLdb 가져오기

db = MySQLdb.connect(‘localhost’,’루트’,’1234′,’테스트’)
cur = db.cursor()

sql = “업데이트 회원세트 zipcode = ‘11132’, address1 = ‘서울시’, address2 = ‘강남구’, address3 = ‘역삼동’ where userid = ‘avocado'”
결과 = cur.execute(sql)
데이터베이스제출()
print(result) # result 1 (업데이트가 성공해서 업데이트할 것이 없으면 0)

  • 결과 값이 1이면 수정되고, 0이면 그러한 프로그래밍이 불가능합니다.

sql = “업데이트 회원세트 zipcode = ‘22222’, address1 = ‘서울시’, address2 = ‘강남구’, address3 = ‘역삼동’ where userid = ‘avocado'”
결과 = cur.execute(sql)
데이터베이스제출()

결과 > 0인 경우:
print(‘수정되었습니다.

’)

다른:
인쇄(‘오류!
’)

질문

  • 로그인 프로그램을 작성해 봅시다.

  • ID를 입력하세요: Apple
  • 비밀번호를 입력하세요: 1111
  • ID를 입력하세요: Apple
  • 비밀번호를 입력해주세요: 1234
  • 잘못된 아이디 또는 비밀번호입니다.

MySQLdb 가져오기

db = MySQLdb.connect(‘localhost’,’루트’,’1234′,’테스트’)
cur = db.cursor()

userid = input(‘아이디를 입력하세요:’)
userpw = input(‘비밀번호를 입력하세요:’)

sql = ‘userid=%s 및 userpw=%s인 구성원에서 userid 선택’
데이터 = (사용자 아이디, userpw)
결과 = cur.execute(sql,데이터)

결과 > 0인 경우:
print(‘로그인.’)
다른:
print(‘아이디 또는 비밀번호가 잘못되었습니다.

’)


cur.close()
데이터베이스닫기()

  • db 테이블의 userid 값과 userpw 값을 비교하여 참이면 로그인하고 참이면 오류를 출력


7. 데이터 삭제

  • 삭제에 성공하면 결과 값이 0보다 크고 출력이 철회됩니다.

  • 삭제에 실패하거나 삭제할 요소가 없으면 오류를 출력합니다.

db = MySQLdb.connect(‘localhost’,’루트’,’1234′,’테스트’)
cur = db.cursor()

sql=”사용자 ID=’avocado’의 구성원에서 삭제”
결과 = cur.execute(sql)
데이터베이스제출()

결과 > 0인 경우:
print(‘로그아웃했습니다.

’)

다른:
인쇄(‘오류!
!
’)