Python 을 사용 하여 MySQL 데이터 조작

본 고 는 Python 3 가 PyMySQL 을 사용 하여 데이터 베 이 스 를 연결 하고 간단 한 삭제 와 검 사 를 실현 하 는 것 을 소개 한다.
PyMySQL 이 뭐 예요?
PyMySQL 은 Python 3.x 버 전에 서 MySQL 서버 를 연결 하 는 라 이브 러 리 이 고 Python 2.x 에 서 는 my sqldb 를 사용 합 니 다.
PyMySQL 설치
PyMySQL 을 사용 하기 전에 PyMySQL 이 설치 되 어 있 는 지 확인 해 야 합 니 다.
PyMySQL 다운로드 주소:https://github.com/PyMySQL/PyMySQL.
만약 설치 되 지 않 았 다 면,우 리 는 다음 명령 을 사용 하여 최신 버 전의 PyMySQL 을 설치 할 수 있 습 니 다.$ pip install PyMySQL시스템 이 pip 명령 을 지원 하지 않 는 다 면 다음 과 같이 설치 할 수 있 습 니 다.
1.git 명령 을 사용 하여 설치 패 키 지 를 다운로드 합 니 다(수 동 으로 다운로드 할 수 있 습 니 다).

$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL
$ python3 setup.py install
2.버 전 번 호 를 만 들 려 면 curl 명령 으로 설치 할 수 있 습 니 다.

$ # X.X  PyMySQL     
$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz
$ cd PyMySQL*
$ python3 setup.py install
메모:위 모듈 을 설치 할 루트 권한 이 있 는 지 확인 하 십시오.
데이터베이스 연결
데이터 베 이 스 를 연결 하기 전에 다음 사항 을 확인 하 십시오.
  • 데이터베이스 TESTDB
  • 를 만 들 었 습 니 다.
  • TESTDB 데이터베이스 에 표 EMPLOYEE
  • 를 만 들 었 습 니 다.
  • EMPLOYEE 표 필드 는 FIRSTNAME,LAST_NAME,AGE,SEX,INCOM
  • 데이터베이스 연결 TESTDB 에서 사용 하 는 사용자 이름 은"testuser"이 고 비밀 번 호 는"test 123"입 니 다.루트 사용자 이름과 비밀 번 호 를 직접 설정 하거나 사용 할 수 있 습 니 다.Mysql 데이터베이스 사용자 권한 은 Grant 명령
  • 을 사용 하 십시오.
  • 당신 의 기계 에 PyMySQL 모듈
  • 이 설치 되 어 있 습 니 다.
    실례:
    다음 인 스 턴 스 는 Mysql 의 TESTDB 데이터 베 이 스 를 연결 합 니 다.
    
    #!/usr/bin/python3
    __author__ = 'mayi'
    
    import pymysql
    
    #        
    db = pymysql.connect("localhost","testuser","test123","TESTDB" )
    
    #    cursor()            cursor
    cursor = db.cursor()
    
    #    execute()      SQL    
    cursor.execute("SELECT VERSION()")
    
    #    fetchone()         .
    data = cursor.fetchone()
    
    print ("Database version : %s " % data)
    
    #        
    db.close()
    
    데이터베이스 시트 만 들 기
    만약 에 데이터베이스 연결 이 존재 한다 면 저 희 는 execute()방법 으로 데이터 베 이 스 를 만 들 수 있 습 니 다.다음 과 같은 생 성 표 EMPLOYEE:
    
    #!/usr/bin/python3
    __author__ = 'mayi'
    
    import pymysql
    
    #        
    db = pymysql.connect("localhost","testuser","test123","TESTDB" )
    
    #    cursor()            cursor
    cursor = db.cursor()
    
    #    execute()      SQL,        
    cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
    
    #           
    sql = """CREATE TABLE EMPLOYEE (
     FIRST_NAME CHAR(20) NOT NULL,
     LAST_NAME CHAR(20),
     AGE INT, 
     SEX CHAR(1),
     INCOME FLOAT )"""
    
    cursor.execute(sql)
    
    #        
    db.close()
    
    데이터베이스 삽입 작업
    다음 인 스 턴 스 는 SQL 삽입 문 구 를 실행 하여 표 EMPLOYEE 에 기록 을 삽입 합 니 다.
    
    #!/usr/bin/python3
    __author__ = 'mayi'
    
    import pymysql
    
    #        
    db = pymysql.connect("localhost","testuser","test123","TESTDB" )
    
    #   cursor()         
    cursor = db.cursor()
    
    # SQL     
    sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
     LAST_NAME, AGE, SEX, INCOME)
     VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
    try:
     #   sql  
     cursor.execute(sql)
     #         
     db.commit()
    except:
     #          
     db.rollback()
    
    #        
    db.close()
    
    이상 의 예 도 다음 과 같은 형식 으로 쓸 수 있다.
    
    #!/usr/bin/python3
    __author__ = 'mayi'
    
    import pymysql
    
    #        
    db = pymysql.connect("localhost","testuser","test123","TESTDB" )
    
    #   cursor()         
    cursor = db.cursor()
    
    # SQL     
    sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
     LAST_NAME, AGE, SEX, INCOME) \
     VALUES ('%s', '%s', '%d', '%c', '%d' )" % \
     ('Mac', 'Mohan', 20, 'M', 2000)
    try:
     #   sql  
     cursor.execute(sql)
     #   sql  
     db.commit()
    except:
     #        
     db.rollback()
    
    #        
    db.close()
    
    데이터베이스 조회 조작
    Python 조회 Mysql 은 fetchone()방법 으로 단일 데 이 터 를 가 져 오고 fetchall()방법 으로 여러 데 이 터 를 가 져 옵 니 다.
  • fetchone():이 방법 은 다음 검색 결과 집합 을 가 져 옵 니 다.결과 집 은 한 대상
  • fetchall():모든 반환 결과 줄 받 기
  • rowcount:이것 은 읽 기 전용 속성 이 며,execute()방법 을 실행 한 후 영향 을 주 는 줄 수
  • 를 되 돌려 줍 니 다.
    실례:
    EMPLOYEE 표 에서 salary(급여)필드 가 1000 이상 인 모든 데 이 터 를 조회 합 니 다.
    
    #!/usr/bin/python3
    __author__ = 'mayi'
    
    import pymysql
    
    #        
    db = pymysql.connect("localhost","testuser","test123","TESTDB" )
    
    #   cursor()         
    cursor = db.cursor()
    
    # SQL     
    sql = "SELECT * FROM EMPLOYEE \
     WHERE INCOME > '%d'" % (1000)
    try:
     #   SQL  
     cursor.execute(sql)
     #         
     results = cursor.fetchall()
     for row in results:
     fname = row[0]
     lname = row[1]
     age = row[2]
     sex = row[3]
     income = row[4]
     #     
     print ("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
     (fname, lname, age, sex, income ))
    except:
     print ("Error: unable to fecth data")
    
    #        
    db.close()
    
    데이터베이스 업데이트 작업
    업데이트 작업 은 데이터 시트 의 데 이 터 를 업데이트 하 는 데 사 용 됩 니 다.다음 인 스 턴 스 는 TESTDB 표 의 SEX 필드 를 모두'M'으로 수정 하고 AGE 필드 는 1 증가 합 니 다.
    
    #!/usr/bin/python3
    __author__ = 'mayi'
    
    import pymysql
    
    #        
    db = pymysql.connect("localhost","testuser","test123","TESTDB" )
    
    #   cursor()         
    cursor = db.cursor()
    
    # SQL     
    sql = "UPDATE EMPLOYEE SET AGE = AGE + 1
     WHERE SEX = '%c'" % ('M')
    try:
     #   SQL  
     cursor.execute(sql)
     #         
     db.commit()
    except:
     #        
     db.rollback()
    
    #        
    db.close()
    
    삭제 작업
    삭제 작업 은 데이터 시트 의 데 이 터 를 삭제 하 는 데 사 용 됩 니 다.다음 인 스 턴 스 는 데이터 시트 EMPLOYEE 에서 AGE 가 20 이상 인 모든 데 이 터 를 삭제 하 는 것 을 보 여 줍 니 다.
    
    #!/usr/bin/python3
    __author__ = 'mayi'
    
    import pymysql
    
    #        
    db = pymysql.connect("localhost","testuser","test123","TESTDB" )
    
    #   cursor()         
    cursor = db.cursor()
    
    # SQL     
    sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
    try:
     #   SQL  
     cursor.execute(sql)
     #     
     db.commit()
    except:
     #        
     db.rollback()
    
    #     
    db.close()
    
    실무,일,총무
    사무 메커니즘 은 데이터 의 일치 성 을 확보 할 수 있다.
    사 무 는 원자 성,일치 성,격 리 성,지속 성 등 네 가지 속성 을 가 져 야 한다.이 네 개의 속성 을 통상 적 으로 ACID 특성 이 라 고 부른다.
  • 원자 성(atomicity).하나의 사 무 는 분할 할 수 없 는 업무 단위 로 업무 에 포 함 된 모든 조작 을 하거나 하지 않 는 다.4567918)
  • 일치 성(consistency).사 무 는 데이터 베 이 스 를 하나의 일치 성 상태 에서 다른 일치 성 상태 로 바 꿔 야 한다.일치 성 은 원자 성과 밀접 한 관 계 를 가진다.4567918)
  • 격 리 성(isolation).하나의 업무 의 집행 은 다른 업무 에 의 해 방 해 될 수 없다.즉,하나의 사무 내부 의 조작 과 사용 하 는 데 이 터 는 병발 하 는 다른 사무 에 대해 격 리 되 고 병발 하 는 각 사무 간 에 서로 간섭 할 수 없다.
  • 지속 성(durability).지속 성 은 영구적(permanence)이 라 고도 하 는데 하나의 사무 가 제출 되면 데이터 베이스 에 대한 변 화 는 영구적 이 어야 한 다 는 것 을 말한다.다음 의 다른 조작 이나 고장 은 그 에 게 어떠한 영향 도 주어 서 는 안 된다.4567918)
    실례
    
    # SQL      
    sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
    try:
     #   SQL  
     cursor.execute(sql)
     #       
     db.commit()
    except:
     #        
     db.rollback()
    트 랜 잭 션 을 지원 하 는 데이터 베 이 스 는 Python 데이터베이스 프로 그래 밍 에서 커서 가 만들어 지면 자동 으로 스텔스 데이터 베 이 스 를 시작 합 니 다.
    commt()방법 커서 의 모든 업데이트 작업,rollback()방법 은 현재 커서 의 모든 작업 을 스크롤 합 니 다.모든 방법 이 새로운 일 을 시작 했다.
    오류 처리
    이상 하 다
    묘사 하 다.
    Warning
    심각 한 경고 가 있 을 때 트리거 합 니 다.예 를 들 어 데 이 터 를 삽입 하 는 것 은 차단 되 는 등 입 니 다.Standard Error 의 하위 클래스 여야 합 니 다.
    Error
    경고 이외 의 모든 오류 클래스.Standard Error 의 하위 클래스 여야 합 니 다.
    InterfaceError
    데이터베이스 인터페이스 모듈 자체 의 오류 가 발생 했 을 때 발생 합 니 다.Error 의 하위 클래스 여야 합 니 다.
    DatabaseError
    데이터베이스 와 관련 된 오류 가 발생 했 을 때 발생 합 니 다.Error 의 하위 클래스 여야 합 니 다.
    DataError
    데이터 처리 시 오류 가 발생 했 을 때 발생 합 니 다.예 를 들 어 제로 오류,데이터 범위 초과 등 입 니 다.DatabaseError 의 하위 클래스 여야 합 니 다.
    OperationalError
    사용자 가 제어 하지 않 고 데이터 베 이 스 를 조작 할 때 발생 하 는 오 류 를 말한다.예 를 들 어 연결 이 예상 치 못 하 게 끊 기 고 데이터 베 이 스 를 찾 을 수 없 으 며 트 랜 잭 션 처리 실패,메모리 할당 오류 등 데이터 베 이 스 를 조작 하 는 것 은 발생 하 는 오류 입 니 다.DatabaseError 의 하위 클래스 여야 합 니 다.
    IntegrityError
    외부 키 검사 실패 등 완전 성 관련 오류.DatabaseError 하위 클래스 여야 합 니 다.
    InternamError
    데이터베이스 의 내부 오류,예 를 들 어 커서(cursor)가 효력 을 잃 었 거나 트 랜 잭 션 동기 화 에 실 패 했 습 니 다.DatabaseError 하위 클래스 여야 합 니 다.
    ProgrammingError
    프로그램 오류,예 를 들 어 데이터 시트(table)를 찾 지 못 했 거나 존재 하지 않 았 거나 SQL 구문 문법 오류,매개 변수 수량 오류 등 이 있 습 니 다.DatabaseError 의 하위 클래스 여야 합 니 다.
    NotSupportedError
    오류 가 지원 되 지 않 습 니 다.데이터베이스 에서 지원 되 지 않 는 함수 나 API 등 을 사 용 했 습 니 다.예 를 들 어 연결 대상 에 rollback()함 수 를 사용 하지만 데이터 베 이 스 는 트 랜 잭 션 이나 트 랜 잭 션 이 닫 혔 습 니 다.DatabaseError 의 하위 클래스 여야 합 니 다.
    이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
  • 좋은 웹페이지 즐겨찾기