虽然近年来很多NoSQL数据库大放异彩,但是像MySQL这样的关系型数据库仍然是互联网上的主流数据库之一。每个学习Python的人都必须学习数据库,无论是做数据分析、网络爬虫、Web开发还是机器学习,都离不开数据库,而MySQL是最流行的数据库。本文介绍如何使用Python操作MySQL。大家在实际开发过程中可以根据实际情况合理选择。1.MySQL-pythonMySQL-python,也叫MySQLdb,是最流行的Python连接MySQL的驱动。许多框架也是基于这个库开发的。遗憾的是,它只支持Python2.x,安装时有很多前置条件,因为是基于C开发的库,在Windows平台上安装很不友好,经常会失败。现在基本不推荐使用,其衍生版本被替换。#前提条件sudoapt-getinstallpython-devlibmysqlclient-dev#Ubuntusudoyuminstallpython-develmysql-devel#RedHat/CentOS#安装pipinstallMySQL-pythonWindows下载exe文件直接安装,公众号回复“win”获取下载链接数据库名#查询前必须先获取游标cur=db.cursor()#执行原生SQL语句cur.execute("SELECT*FROMYOUR_TABLE_NAME")forrowincur.fetchall():print(row[0])db.close()2.mysqlclient由于mysql-python问题长期年久失修。后来出现了它的Fork版本mysqlclient,完全兼容MySQLdb,支持Python3.x。它是DjangoORM的依赖工具。如果你想使用原生的SQL来操作数据库,那么推荐这个驱动。安装方法同MySQLdb。对于Windows,可以在https://www.lfd.uci.edu/~gohl...网站找到对应版本的whl包进行下载安装。添加说明#Windows安装pipinstallsome-package.whl#linux先决条件sudoapt-getinstallpython3-dev#debian/Ubuntusudoyuminstallpython3-devel#RedHat/CentOSbrew安装mysql-connector-c#macOS(Homebrew)pip安装mysqlclient3,PyMySQLPyMySQL是纯Python实现的驱动,速度不如MySQLdb。最大的特点可能是它的安装方式没有那么繁琐,而且还兼容MySQL-pythonpipinstallPyMySQL#为了兼容mysqldb,只需要添加pymysql即可。install_as_MySQLdb()一个例子SELECTHost,UserFROMuser")forrincur:print(r)cur.close()conn.close()4.peewee写原生SQL的过程很繁琐,代码重复,没有面向对象思想,很多Encapsulate包装器封装和ORM框架。ORM是Python对象与数据库关系表之间的映射关系。使用ORM,您不再需要编写SQL语句。提高了编写代码的速度,兼容各种数据库系统,如sqlite、mysql、postgresql等。付出的代价可能是性能上的一些损失。如果熟悉Django自带的ORM,那么peewee的学习成本几乎为零。它是Python中最流行的ORM框架。pipinstallpeewee一个例子importpeeweefrompeeweeimport*db=MySQLDatabase('jonhydb',user='john',passwd='megajonhy')classBook(peewee.Model):author=peewee.CharField()title=peewee.TextField()classMeta:database=dbBook.create_table()book=Book(author="me",title='Peeweeiscool')book.save()forbookinBook.filter(author="me"):print(book.title)官方文档:http://docs.peewee-orm.com/en...5.SQLAlchemy如果你想找一个同时支持原生SQL和ORM的工具,那么SQLAlchemy是最好的选择,这与Java中的Hibernate框架非常接近。fromsqlalchemyimportcreate_enginefromsqlalchemy.ormimportsessionmakerfromsqlalchemy_declarativeimportAddress,Base,PersonclassAddress(Base):__tablename__='address'id=Column(Integer,primary_key=True)street_name=Column(String(250))引擎(create_eng'sqlite:///sqlalchemy_example.db')Base.metadata.bind=engineDBSession=sessionmaker(bind=engine)session=DBSession()#在person表中插入一个Personnew_person=Person(name='newperson')session.add(new_person)session.commit()现在你已经差不多弄清楚这几种数据库驱动的优缺点了,接下来就可以选择其中的一种进行系统学习,然后应用到项目中了。祝大家学习愉快,有不懂的可以咨询我。
