首页 > 数据库 >Python操作MySQL数据库的5种方式

Python操作MySQL数据库的5种方式

时间:2024-07-29 19:40:22浏览次数:9  
标签:cur Python peewee 数据库 db MySQLdb MySQL

不管你是做数据分析,还是网络爬虫,Web 开发、亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的5种方式,你可以在实际开发过程中根据实际情况合理选择。

1、MySQLdb

MySQLdb又叫MySQL-python ,是 Python 连接 MySQL 最流行的一个驱动,很多框架都也是基于此库进行开发,遗憾的是它只支持 Python2.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 文件安装
#!/usr/bin/python
import MySQLdb
db = MySQLdb.connect(
     host="localhost",    # 主机名
     user="root",         # 用户名
     passwd="pythontab.com",  # 密码
     db="testdb")        # 数据库名称
# 查询前,必须先获取游标
cur = db.cursor()
# 执行的都是原生SQL语句
cur.execute("SELECT * FROM mytable")
for row in cur.fetchall():
    print(row[0])
db.close()

2、mysqlclient

由于 MySQL-python(MySQLdb) 年久失修,后来出现了它的 Fork 版本 mysqlclient,完全兼容 MySQLdb,同时支持 Python3.x,是 Django ORM的依赖工具,如果你想使用原生 SQL 来操作数据库,那么推荐此驱动。安装方式和 MySQLdb 是一样的,Windows 可以在 https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient 网站找到 对应版本的 whl 包下载安装。

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="pythontab.com", db='testdb')
cur = conn.cursor()
cur.execute("SELECT Host,User FROM user")
for r in cur:
    print(r)
cur.close()
conn.close()

4、peewee

写原生 SQL 的过程非常繁琐,代码重复,没有面向对象思维,继而诞生了很多封装 wrapper 包和 ORM 框架,ORM 是 Python 对象与数据库关系表的一种映射关系,有了 ORM 你不再需要写 SQL 语句。提高了写代码的速度,同时兼容多种数据库系统,如sqlite, mysql、postgresql,付出的代价可能就是性能上的一些损失。如果你对 Django 自带的 ORM 熟悉的话,那么 peewee的学习成本几乎为零。它是 Python 中是最流行的 ORM 框架。

安装

pip install peewee

例子:

import peewee
from peewee import *
db = MySQLDatabase('testdb', user='root', passwd='pythontab.com')
class Book(peewee.Model):
    author = peewee.CharField()
    title = peewee.TextField()
    class Meta:
        database = db
Book.create_table()
book = Book(author="pythontab", title='pythontab is good website')
book.save()
for book in Book.filter(author="pythontab"):
    print(book.title)

官方文档:http://docs.peewee-orm.com/en/latest/peewee/installation.html

5、SQLAlchemy

如果想找一种既支持原生 SQL,又支持 ORM 的工具,那么 SQLAlchemy 是最好的选择,它非常接近 Java 中的 Hibernate 框架。

#学习中遇到问题没人解答?小编创建了一个Python学习交流群:531509025
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()

标签:cur,Python,peewee,数据库,db,MySQLdb,MySQL
From: https://www.cnblogs.com/python1111/p/18330889

相关文章

  • Python自定义排序
    Python封装了成熟的排序函数,我们只需要调用内部的sort函数,就可以完成排序。但是实际场景当中,排序的应用往往比较复杂,比如对象类型,当中有多个字段,我们希望按照指定字段排序,或者是希望按照多关键字排序,这个时候就不能简单的函数调用来解决了。1.字典排序我们先来看下最常见的字典......
  • Python中清空list的几种方法
    本文介绍清空list的四种方法,以及list=[]和list.clear()在使用中的区别(坑)。1、使用clear()方法lists=[1,2,1,1,5]lists.clear()print(lists)>>>[]2、重新初始化列表:初始化该范围内的列表,初始化列表没有值,即大小为0的列表lists=[1,2,1,1,5]lists=[]print......
  • 小一保姆级 python三大核心多态、抽象类、动态添加内容详解
    一.多态多态是面向对象编程中的一个核心概念,它允许一个接口被多个数据类型实现。这意味着,即使多个类具有不同的内部实现,它们也可以共享一个公共接口。多态的实现通常依赖于继承和方法重写。继承:子类继承父类的属性和方法。方法重写:子类重写父类中的方法,以提供特定的实现。......
  • python找出字典中value最大值的几种方法
    假设定义一字典,m={"a":3,"e":6,"b":2,"g":7,"f":7,"c":1,"d":5},在不知道key的情况下如何找出字典中value最大的所有key-value对?下面讨论几种方法。1)通过m.values()和max()函数第一步,通过max()函数找到字典中的value最大值。max(m.values())结果为7第二步,再通......
  • 计算机毕业设计选题推荐-音乐播放系统-Java/Python项目实战
    ✨作者主页:IT毕设梦工厂✨个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。☑文末获取源码☑精彩专栏推荐⬇⬇⬇Java项目Python项目安卓项目微信小程序项目......
  • 轻松拿捏python推导式
    推导式定义推导式 comprehensions(又称解析式),是Python的一种独有特性。推导式最主要的特点就是可以从一个数据序列构建另一个新的数据序列。在Python中目前常用的推导式有列表推导式、字典推导式和集合推导式。列表推导式(ListComprehensions)列表推导式是我们最常使用的......
  • python面向对象编程题——有声书系统
    设计一个图书管理系统,基类为类Book,要求有书名和作者属性,由Book类派生子类AudioBook(有声书,需要具有演说者属性),对于Book和AudioBook进行合理的属性及行为的抽象,编写图书管理类用于管理图书以及有声图书classBook:def__init__(self,title,author):se......
  • PHP获取MySQL错误信息的方法是什么
    在PHP中,当你使用MySQLi或PDO扩展与MySQL数据库进行交互时,你可能会遇到错误或异常。以下是如何从MySQLi和PDO获取错误信息的方法:使用MySQLi获取错误信息:如果你使用的是MySQLi扩展,你可以通过mysqli_error()函数或mysqli对象的error属性来获取最近调用的错误描述。使用mysqli_erro......
  • MySQL忘记密码
    查看MySQL有没有启动。如果MySQL已经启动了,那么停掉MySQL:servicemysqldstop设置无密码启动在下面写上:skip-grant-tables启动MySQLservicemysqldstart无密码开启MySQL可以在里面设置密码。......
  • 基于python语言的新闻推荐系统的设计与实现
    目录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4添加信息流程2.2.5修改信息流程2.2.6删除信息流程2.3 系统......