>  기사  >  백엔드 개발  >  Python_python을 사용하여 MySQL에 연결하는 여러 가지 방법에 대한 자세한 설명

Python_python을 사용하여 MySQL에 연결하는 여러 가지 방법에 대한 자세한 설명

不言
不言원래의
2018-04-04 16:24:041450검색

이 기사에서는 Python을 사용하여 MySQL에 연결하는 여러 가지 방법을 주로 소개합니다. 실제 상황에 따라 합리적인 연결 방법을 선택할 수 있습니다. 도움이 필요한 친구는 참고할 수 있습니다.

최근에는 NoSQL 데이터베이스가 많이 대중화되었지만 MySQL처럼 관계형 데이터베이스는 여전히 인터넷의 주류 데이터베이스 중 하나입니다. Python을 배우는 사람은 누구나 데이터베이스를 잘 배워야 합니다. 데이터 분석을 하든, 웹 크롤링을 하든, 웹 개발을 하든, 머신 러닝을 하든 관계형 데이터베이스 없이는 할 수 없습니다. MySQL은 데이터베이스를 다루어야 하며, MySQL은 가장 널리 사용되는 데이터베이스입니다. 이 기사에서는 실제 개발 과정에서 실제 상황에 따라 Python이 MySQL을 작동하는 여러 가지 방법을 소개합니다.

1. MySQL-python

MySQL-python은 MySQL에 연결하는 데 가장 널리 사용되는 드라이버입니다. 불행히도 많은 프레임워크도 이 라이브러리를 기반으로 개발됩니다. x. 게다가 C를 기반으로 개발된 라이브러리이기 때문에 설치 시 전제조건이 많습니다. Windows 플랫폼에 설치하기가 매우 불편하고 실패하는 경우가 많으며 현재는 기본적으로 사용하지 않는 것이 좋습니다. 파생 버전.

# 前置条件
sudo apt-get install python-dev libmysqlclient-dev # Ubuntu
sudo yum install python-devel mysql-devel # Red Hat / CentOS
# 安装
pip install MySQL-python

Windows는 exe 파일을 다운로드하여 직접 설치할 수 있습니다. 공식 계정에 "win"이라고 답하면 다운로드 링크를 얻을 수 있습니다

#!/usr/bin/python
import MySQLdb
db = MySQLdb.connect(
   host="localhost",  # 主机名
   user="john",     # 用户名
   passwd="megajonhy", # 密码
   db="jonhydb")    # 数据库名称
# 查询前,必须先获取游标
cur = db.cursor()
# 执行的都是原生SQL语句
cur.execute("SELECT * FROM YOUR_TABLE_NAME")
for row in cur.fetchall():
  print(row[0])
db.close()

2. MySQL-python의 파손, 나중에 등장 해당 포크 버전 mysqlclient는 MySQLdb와 완벽하게 호환되며 Python3.x를 지원합니다. 기본 SQL을 사용하여 데이터베이스를 작동하려는 경우 이 드라이버를 권장합니다. 설치 방법은 MySQLdb와 동일합니다. Windows는 https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient에서 해당 버전의 whl 패키지 다운로드 및 설치를 찾을 수 있습니다.

# Windows安装
pip install some-package.whl
# linux 前置条件
sudo apt-get install python3-dev # debian / Ubuntu
sudo yum install python3-devel # Red Hat / CentOS
brew install mysql-connector-c # macOS (Homebrew)
pip install mysqlclient

3. PyMySQL

PyMySQL은 순수 Python으로 구현된 드라이버입니다. MySQLdb만큼 빠르지는 않습니다. MySQL-python

pip install PyMySQL
# 为了兼容mysqldb,只需要加入
pymysql.install_as_MySQLdb()

예제

import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', passwd="xxx", db='mysql')
cur = conn.cursor()
cur.execute("SELECT Host,User FROM user")
for r in cur:
  print(r)
cur.close()
conn.close()

4, peewee

네이티브 SQL을 작성하는 과정이 매우 번거롭고 코드가 반복됩니다. 객체 지향적 사고가 없으며 많은 패키지 래퍼가 탄생했습니다. 패키지 및 ORM 프레임워크인 ORM은 Python 객체와 데이터베이스 관계형 테이블 간의 매핑 관계입니다. 더 이상 SQL 문을 작성할 필요가 없습니다. 코드 작성 속도를 향상시키고 sqlite, mysql, postgresql 등 다양한 데이터베이스 시스템과 호환됩니다. 지불된 가격으로 인해 성능이 다소 저하될 수 있습니다. Django와 함께 제공되는 ORM에 익숙하다면 peewee의 학습 비용은 거의 0입니다. Python에서 가장 널리 사용되는 ORM 프레임워크입니다.

pip install peewee

import peewee
from peewee import *
db = MySQLDatabase('jonhydb', user='john', passwd='megajonhy')
class Book(peewee.Model):
  author = peewee.CharField()
  title = peewee.TextField()
  class Meta:
    database = db
Book.create_table()
book = Book(author="me", title='Peewee is cool')
book.save()
for book in Book.filter(author="me"):
  print(book.title)

공식 문서: http://docs.peewee-orm.com/en/latest/peewee/installation.html

5, SQLAlchemy

if 네이티브 SQL과 ORM을 모두 지원하는 도구를 찾으려면 SQLAlchemy가 최선의 선택입니다. 이는 Java의 Hibernate 프레임워크에 매우 가깝습니다.

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy_declarative import Address, Base, Person
class Address(Base):
  __tablename__ = 'address'
  id = Column(Integer, primary_key=True)
  street_name = Column(String(250))
engine = create_engine('sqlite:///sqlalchemy_example.db')
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
session = DBSession()
# Insert a Person in the person table
new_person = Person(name='new person')
session.add(new_person)
session.commit()

이제 데이터베이스 드라이버의 장점과 단점을 거의 이해하셨으니 그 중 하나를 선택하여 체계적으로 공부하시고 프로젝트에 적용하셔도 좋습니다. 아니, 아시는 바가 있으시다면요. , 저에게 상담하실 수 있습니다.

관련 권장사항:

파이썬을 sqlite에 연결하는 예제 튜토리얼

임팔라에 연결하는 파이썬 예제에 대한 자세한 설명

파이썬을 사용하여 mongodb에 연결하고 작동하는 방법

위 내용은 Python_python을 사용하여 MySQL에 연결하는 여러 가지 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.