python mysql_Python 操作 MySQL 的5种方式

原标题: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

importMySQLdb

db =MySQLdb.connect(

host="localhost", # 主机名

user="root", # 用户名

passwd="pythontab.com", # 密码

db="testdb") # 数据库名称

# 查询前,必须先获取游标

cur =db.cursor

# 执行的都是原生SQL语句

cur.execute("SELECT * FROM mytable")

forrow incur.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 包下载安装。

# 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

例子:

importpymysql

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")

forr incur:

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

例子:

importpeewee

frompeewee import*

db =MySQLDatabase('testdb', user='root', passwd='pythontab.com')

classBook(peewee.Model):

author =peewee.CharField

title =peewee.TextField

classMeta:

database =db

Book.create_table

book =Book(author="pythontab", title='pythontab is good website')

book.save

forbook inBook.filter(author="pythontab"):

print(book.title)

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

5、SQLAlchemy

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

fromsqlalchemy importcreate_engine

fromsqlalchemy.orm importsessionmaker

fromsqlalchemy_declarative importAddress, Base, Person

classAddress(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返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值