1。简介 MySQL是目前使用最广泛的数据库之一,它有着良好的性能,能够跨平台,支持分布式,能够承受高并发。下载地址:MySQL::DownloadMySQLCommunityServer安装参考:图解MySQL5。7。20免安装版配置方法百度经验(baidu。com) Python大致有如下5种方式操作MySQL。 (1)MySQLpythonMySQLpython也称MySQLdb,基于C库开发,曾经是一个十分流行的MySQL驱动,具有出色的性能,但其早已停更,仅支持Python2,不支持Python3,现在基本不推荐使用了,取而代之的是它的衍生版。(2)mysqlclientMySQLdb的Fork版本,完全兼容MySQLdb,支持Python3,它是DjangoORM的依赖工具,如果你喜欢用原生SQL操作数据库,那么推荐使用它。(3)PyMySQLPyMySQL采用纯Python开发,兼容MySQLdb,性能不如MySQLdb,安装方便,支持Python3。(4)peeweepeewee是一个流行的ORM框架,实现了对象与数据库表的映射,兼容多种数据库,我们无需知道原生SQL,只要了解面向对象的思想就可以简单、快速的操作相应数据库,支持Python3。(5)SQLAlchemySQLAlchemy是一个ORM框架,同时也支持原生SQL,支持Python3,它类似于Java的Hibernate框架。2。实际操作 先使用如下建表语句创建一张简单的数据库表。CREATETABLEstudent(idint(10)AUTOINCREMENTPRIMARYKEY,namevarchar(255)NOTNULL,ageint(10)NOTNULL); 2。1mysqlclient 执行pipinstallmysqlclient进行安装,看一下具体操作。 新增importMySQLdbconnectMySQLdb。connect(主机hostlocalhost,端口号port3306,用户名userroot,密码passwdroot,数据库名称dbtest,指定字符的编、解码格式useunicodeTrue,charsetutf8)先获取游标,再进行相应SQL操作cursorconnect。cursor()执行新增SQLsqlinsertintostudent(name,age)values(s,s);data〔(张三,22),(李四,23)〕cursor。executemany(sql,data)提交connect。commit()关闭cursor。close()connect。close() 查询importMySQLdbconnectMySQLdb。connect(hostlocalhost,port3306,userroot,passwdroot,dbtest,useunicodeTrue,charsetutf8)cursorconnect。cursor()cursor。execute(SELECTFROMstudent)print(cursor。fetchall())cursor。close()connect。close() cursor查看方法 fetchone()获取结果集的下一行fetchmany(size)获取结果集的下几行务fetchall()获取结果集中剩下的所有行 修改importMySQLdbconnectMySQLdb。connect(hostlocalhost,port3306,userroot,passwdroot,dbtest,useunicodeTrue,charsetutf8)cursorconnect。cursor()cursor。execute(UPDATEstudentSETname张四WHEREid1)connect。commit()cursor。close()connect。close() 删除importMySQLdbconnectMySQLdb。connect(hostlocalhost,port3306,userroot,passwdroot,dbtest,useunicodeTrue,charsetutf8)cursorconnect。cursor()cursor。execute(DELETEFROMstudentWHEREid1)connect。commit()cursor。close()connect。close() 2。2PyMySQL 执行pipinstallpymysql进行安装,使用方式与mysqlclient基本类似。importpymysqlconnectpymysql。connect(hostlocalhost,port3306,userroot,passwordroot,databasetest,charsetutf8)cursorconnect。cursor()sqlinsertintostudent(name,age)values(s,s);data〔(张三,22),(李四,23)〕cursor。executemany(sql,data)connect。commit()cursor。execute(SELECTFROMstudent)print(cursor。fetchall())cursor。close()connect。close() 2。3peewee 执行pipinstallpeewee进行安装,看一下具体操作。 定义映射类frompeeweeimport连接数据库dbMySQLDatabase(test,hostlocalhost,port3306,userroot,passwdroot,charsetutf8)映射类classTeacher(Model):idAutoField(primarykeyTrue)nameCharField()ageIntegerField()classMeta:databasedb创建表db。createtables(〔Teacher〕) 新增frompeeweeimportdbMySQLDatabase(test,hostlocalhost,port3306,userroot,passwdroot,charsetutf8)classTeacher(Model):idAutoField(primarykeyTrue)nameCharField()ageIntegerField()classMeta:databasedbt1Teacher(name张三,age22)t2Teacher(name李四,age33)t3Teacher(name王五,age33)t1。save()t2。save()t3。save() 查询frompeeweeimportdbMySQLDatabase(test,hostlocalhost,port3306,userroot,passwdroot,charsetutf8)classTeacher(Model):idAutoField(primarykeyTrue)nameCharField()ageIntegerField()classMeta:databasedb查询单条数据tTeacher。get(Teacher。id1)print(name:,t。name)查询多条tsTeacher。select()。where(Teacher。age33)fortints:print(name:,t。name) 修改frompeeweeimportdbMySQLDatabase(test,hostlocalhost,port3306,userroot,passwdroot,charsetutf8)classTeacher(Model):idAutoField(primarykeyTrue)nameCharField()ageIntegerField()classMeta:databasedbtTeacher。update({Teacher。name:张四})。where(Teacher。id1)t。execute() 删除frompeeweeimportdbMySQLDatabase(test,hostlocalhost,port3306,userroot,passwdroot,charsetutf8)classTeacher(Model):idAutoField(primarykeyTrue)nameCharField()ageIntegerField()classMeta:databasedbTeacher。delete()。where(Teacher。id2)。execute() 2。4SQLAlchemy 执行pipinstallsqlalchemy进行安装,看一下具体操作。 定义映射类fromsqlalchemyimportcreateenginefromsqlalchemy。ext。declarativeimportdeclarativebasefromsqlalchemyimportColumn,Integer,Stringenginecreateengine(mysqlmysqldb:root:rootlocalhost:3306test?charsetutf8,打印执行语句echoTrue,连接池大小poolsize10,指定时间内回收连接poolrecycle3600)映射基类Basedeclarativebase()具体映射类classTeacher(Base):指定映射表名tablenameteacher映射字段idColumn(Integer,primarykeyTrue)nameColumn(String(30))ageColumn(Integer)创建表Base。metadata。createall(engine) 新增fromsqlalchemyimportcreateenginefromsqlalchemy。ext。declarativeimportdeclarativebasefromsqlalchemyimportColumn,Integer,Stringfromsqlalchemy。ormimportsessionmakerenginecreateengine(mysqlmysqldb:root:rootlocalhost:3306test?charsetutf8,打印执行语句echoTrue,连接池大小poolsize10,指定时间内回收连接poolrecycle3600)映射基类Basedeclarativebase()具体映射类classTeacher(Base):指定映射表名tablenameteacher映射字段idColumn(Integer,primarykeyTrue)nameColumn(String(30))ageColumn(Integer)Sessionsessionmaker(bindengine)创建Session类实例sessionSession()ls〔〕t1Teacher(name张三,age22)t2Teacher(name李四,age33)t3Teacher(name王五,age33)ls。append(t1)ls。append(t2)ls。append(t3)session。addall(ls)session。commit()session。close() 查询fromsqlalchemyimportcreateenginefromsqlalchemy。ext。declarativeimportdeclarativebasefromsqlalchemyimportColumn,Integer,Stringfromsqlalchemy。ormimportsessionmakerenginecreateengine(mysqlmysqldb:root:rootlocalhost:3306test?charsetutf8,打印执行语句echoTrue,连接池大小poolsize10,指定时间内回收连接poolrecycle3600)映射基类Basedeclarativebase()具体映射类classTeacher(Base):指定映射表名tablenameteacher映射字段idColumn(Integer,primarykeyTrue)nameColumn(String(30))ageColumn(Integer)Sessionsessionmaker(bindengine)创建Session类实例sessionSession()查询一条数据,filter相当于where条件tsession。query(Teacher)。filter(Teacher。id1)。one()print(,t。name)查询所有数据tssession。query(Teacher)。filter(Teacher。age33)。all()fortints:print(,t。name) 修改fromsqlalchemyimportcreateenginefromsqlalchemy。ext。declarativeimportdeclarativebasefromsqlalchemyimportColumn,Integer,Stringfromsqlalchemy。ormimportsessionmakerenginecreateengine(mysqlmysqldb:root:rootlocalhost:3306test?charsetutf8,打印执行语句echoTrue,连接池大小poolsize10,指定时间内回收连接poolrecycle3600)映射基类Basedeclarativebase()具体映射类classTeacher(Base):指定映射表名tablenameteacher映射字段idColumn(Integer,primarykeyTrue)nameColumn(String(30))ageColumn(Integer)Sessionsessionmaker(bindengine)创建Session类实例sessionSession()tsession。query(Teacher)。filter(Teacher。id1)。one()print(修改前名字,t。name)t。name张四session。commit()print(修改后名字,t。name) 删除fromsqlalchemyimportcreateenginefromsqlalchemy。ext。declarativeimportdeclarativebasefromsqlalchemyimportColumn,Integer,Stringfromsqlalchemy。ormimportsessionmakerenginecreateengine(mysqlmysqldb:root:rootlocalhost:3306test?charsetutf8,打印执行语句echoTrue,连接池大小poolsize10,指定时间内回收连接poolrecycle3600)映射基类Basedeclarativebase()具体映射类classTeacher(Base):指定映射表名tablenameteacher映射字段idColumn(Integer,primarykeyTrue)nameColumn(String(30))ageColumn(Integer)Sessionsessionmaker(bindengine)创建Session类实例sessionSession()tsession。query(Teacher)。filter(Teacher。id1)。one()session。delete(t)session。commit() Python学习日记