Python 은 Pandas 라 이브 러 리 를 사용 하여 MySQL 데이터베이스 의 읽 기와 쓰 기 를 실현 합 니 다.
5515 단어 Pandas 라 이브 러 리MySQL 데이터베이스
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 데이터 베 이 스 를 실현 하기 위해 다음 세 개의 라 이브 러 리 가 필요 합 니 다.
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 데이터 베 이 스 를 읽 고 쓰 는 지 소개 했다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
CentOS 7 기반 MySQL - 5.7 설치 및 기본 동작정보 기술 과 시장의 발전 에 따라 특히 20 세기 90 년대 이후 데이터 관 리 는 데 이 터 를 저장 하고 관리 하 는 것 이 아니 라 사용자 가 필요 로 하 는 각종 데이터 관리 방식 으로 바 뀌 었 다.데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.