Python 은 Pandas 라 이브 러 리 를 사용 하여 MySQL 데이터베이스 의 읽 기와 쓰 기 를 실현 합 니 다.

이번 공 유 는 Python 에서 Pandas 라 이브 러 리 를 사용 하여 MySQL 데이터 베 이 스 를 읽 고 쓰 는 방법 을 소개 합 니 다.우선 저희 가 ORM 에 대해 서 좀 알 아야 될 것 같 아 요.
ORM 기술
대상 관계 매 핑 기술,즉 ORM(Object-Relational Mapping)기술 은 관계 데이터 뱅 크 의 표 구 조 를 대상 에 매 핑 하고 설명 대상 과 데이터 베이스 간 에 매 핑 된 메타 데 이 터 를 사용 하여 프로그램의 대상 을 관계 데이터 베이스 에 자동 으로 지속 시 키 는 것 을 말한다.
Python 에서 가장 유명한 ORM 프레임 워 크 는 SQLAlchemy 입 니 다.자바 의 전형 적 인 ORM 중간 부품 은 Hibernate,ibatis,speedframework 이다.
SQLAlchemy
SQLAlchemy 는 Python 프로 그래 밍 언어 아래 의 오픈 소스 소프트웨어 입 니 다.SQL 패키지 및 대상 관계 맵(ORM)도 구 를 제공 하고 MIT 허가증 으로 발행 합 니 다.
SQLAlchemy 모듈 은 create 를 제공 합 니 다.engine()함 수 는 데이터베이스 연결 을 초기 화 하 는 데 사 용 됩 니 다.SQLAlchemy 는 연결 정 보 를 문자열 로 표시 합 니 다.' + :// : @ : / Pandas 읽 기 쓰기 MySQL 데이터베이스
우 리 는 Pandas 읽 기와 쓰기 MySQL 데이터 베 이 스 를 실현 하기 위해 다음 세 개의 라 이브 러 리 가 필요 합 니 다.
  • pandas
  • sqlalchemy
  • pymysql
  • 그 중에서 pandas 모듈 은 read 를 제공 합 니 다.sql_query()함수 가 데이터베이스 에 대한 조 회 를 실 현 했 습 니 다.tosql()함수 가 데이터베이스 에 대한 기록 을 실현 하 였 습 니 다.새 MySQL 데이터 시트 를 만 들 필요 가 없습니다.
    sqlalchemy 모듈 은 서로 다른 데이터베이스 와 의 연결 을 실 현 했 고 pymysql 모듈 은 Python 이 MySQL 데이터 베 이 스 를 조작 할 수 있 게 했다.
    저 희 는 MySQL 데이터베이스 에 있 는 mydb 데이터베이스 와 employee 표를 사용 할 것 입 니 다.내용 은 다음 과 같 습 니 다.

    주의:
    1.라 이브 러 리 문서 에 따 르 면 tosql 함수 지원 두 가지 my sql 엔진 하 나 는 sqlalchemy 이 고 다른 하 나 는 sqlliet 3 입 니 다.맞습니다.입고 할 때 pymy sql 은 사용 할 수 없습니다!!
    my sqldb 도 사용 할 수 없습니다.sqlalchemy 나 sqlliet 3 만 사용 할 수 있 습 니 다!!sqllift 3 가 업데이트 되 지 않 은 지 오래 되 었 음 을 감안 하여 필 자 는 sqlalchemy 를 사용 하 는 것 을 권장 합 니 다!!
    2.to_sql 함 수 는 pd 가 아니 라 io.sql 에서 sql 스 크 립 트 의 다음 클래스 입 니 다!!그래서 tosql 의 가장 좋 은 문법 은:
    
    pd.io.sql.to_sql(df1,tablename,con=conn,if_exists='repalce')  
    다음은 pandas 에서 MySQL 데이터베이스 에 대한 읽 기와 쓰 기 를 어떻게 실현 하 는 지 보 여 주 는 간단 한 예 를 소개 합 니 다.
    
    import pandas as pd
    from sqlalchemy import create_engine
    #         ,  pymysql  
    # MySQL   :root,   :147369,   :3306,   :test
    engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
    #     ,  employee       
    sql = ''' select * from employee; '''
    # read_sql_query     : sql  ,      
    df = pd.read_sql_query(sql, engine)
    #   employee      
    print(df)
    
    #   pandas  DataFrame,   id,num  
    df = pd.DataFrame({'id': [1, 2, 3, 4], 'name': ['zhangsan', 'lisi', 'wangwu', 'zhuliu']})
    #     DataFrame   MySQL     ,  index 
    df.to_sql('mydf', engine, index=True)
    print('Read from and write to Mysql table successfully!')
    실행 결과:

    이것 은 우리 가 pandas 에서 새로 만 든 DataFrame 을 MySQL 에 기록 한 것 이 확실 하 다 는 것 을 설명 합 니 다!
    MySQL 에 CSV 파일 쓰기
    이상 의 예 는 Pandas 라 이브 러 리 를 사용 하여 MySQL 데이터 베 이 스 를 읽 고 쓰 는 것 을 실 현 했 습 니 다.CSV 파일 을 MySQL 에 기록 하고 예제 의 example.csv 파일 은 다음 과 같 습 니 다.

    예제 의 Python 코드 는 다음 과 같 습 니 다.
    
    # -*- coding: utf-8 -*-
    
    #       
    import pandas as pd
    from sqlalchemy import create_engine
    
    #         ,  pymysql  
    db_info = {'user': 'root',
          'password': '123456',
          'host': 'localhost',
          'port': 3306,
          'database': 'test'
          }
    
    engine = create_engine('mysql+pymysql://%(user)s:%(password)s@%(host)s:%(port)d/%(database)s?charset=utf8' % db_info, encoding='utf-8')
    #             
    # engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
    
    #     CSV  
    df = pd.read_csv("C:/Users/fuqia/Desktop/example.csv", sep=',')
    print(df)
    #     DataFrame   MySQL     ,   index (index=False)
    # if_exists:
    # 1.fail:     ,    
    # 2.replace:     ,   ,       ,     
    # 3.append:     ,     ,           !!
    pd.io.sql.to_sql(df, 'example', con=engine, index=False, if_exists='replace')
    # df.to_sql('example', con=engine, if_exists='replace')       
    print("Write to MySQL successfully!")
    MySQL 에서 example 표 보기

    보충:engine.execute(sql)는 sql 문 구 를 직접 실행 할 수 있 습 니 다.
    
    from sqlalchemy import create_engine 
     
     engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
    sql = "DROP TABLE IF EXISTS example"
    engine.execute(sql)
    pymy sql 을 사용 하려 면 cursor 를 사용 해 야 합 니 다.독자 가 비교 해 볼 수 있 습 니 다.
    
    import pymysql
    from sqlalchemy import create_engine
    
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='test')
    # engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
    sql = "DROP TABLE IF EXISTS test_input"
    cursor = conn.cursor()
    cursor.execute(sql)
    총결산
    본 고 는 주로 ORM 기술 과 SQLAlchemy 모듈 을 소개 하고 두 개의 Python 프로그램의 인 스 턴 스 를 보 여 주 며 Pandas 라 이브 러 리 를 어떻게 사용 하여 MySQL 데이터 베 이 스 를 읽 고 쓰 는 지 소개 했다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기