Python高级
文章目录
- Python高级
- python操作数据库mysql-connector
- demo_mysql_test.py:
- pyMysql
python操作数据库mysql-connector
本章节为大家介绍使用mysql-connector来连接使用 MySQL,mysql-connector是MySQL官方提供的驱动器。
可以使用pip命令来安装mysql-connector:
python -m pip install mysql-connector使用以下代码测试 mysql-connector 是否安装成功:
demo_mysql_test.py:
import mysql.connector
执行以上代码,如果没有产生错误,表明安装成功。
注**意:**如果你的 MySQL 是 8.0 版本,密码插件验证方式发生了变化,早期版本为 mysql_native_password,8.0 版本为 caching_sha2_password,所以需要做些改变:
先修改 my.ini 配置:
[mysqld] default_authentication_plugin=mysql_native_password然后在 mysql 下执行以下命令来修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
# mysql-connect test import mysql.connector mysqlDb = mysql.connector.connect( host='localhost', user='root', password='Lh_198571', database = 'db_python' ) # 创建数据库 def createDb(mysqlDb): cursor = mysqlDb.cursor() cursor.execute("create database db_python2") print('数据库创建成功') # createDb(mysqlDb) # 查看数据库 def showDb(mysqlDb): cursor = mysqlDb.cursor() cursor.execute("SHOW DATABASES") for i in cursor: print(i) # showDb(mysqlDb) # 创建表 # 创建表必须选中数据库才能创建,因此在创建表时,必须在connect中添加database指定数据库 def createTable(mysqlDb): cursor = mysqlDb.cursor() cursor.execute("CREATE TABLE tb_user(id int not null primary key auto_increment,name varchar(20),sex int)") # createTable(mysqlDb) # 执行insert语句 def insert(mysqlDb): cursor = mysqlDb.cursor() try: cursor.execute("INSERT INTO tb_user(name,sex) values('sofwin2',0)") print('insert成功') except: print('插入异常') finally: mysqlDb.commit() # insert(mysqlDb) # 查询语句 def query(mysqlDb): cursor = mysqlDb.cursor() cursor.execute("select * from tb_user") users = cursor.fetchall() for user in users: print(user[0]) print(user[1]) print(user[2]) query(mysqlDb) # 将查询语结果封装到list中,每个标位为dict def queryAll(mysqlDb): cursor = mysqlDb.cursor() cursor.execute("select * from tb_user") users = cursor.fetchall() userList=[] for user in users: u = {} u['id'] = user[0] u['name'] = user[1] u['sex'] = user[2] userList.append(u) print(userList) queryAll(mysqlDb) # 定义user对象 class User: id = 0 name = '' sex = 0 def __init__(self,id, name, sex): self.id = id self.name = name self.sex = sex def __str__(self): print('用户id:'+ str(self.id)+',name:'+self.name+',sex:'+ str(self.sex)) # list中封装User对象 def queryAll2(mysqlDb): cursor = mysqlDb.cursor() cursor.execute("select * from tb_user") users = cursor.fetchall() userList=[] for x in users: u = User(x[0],x[1],x[2]) userList.append(u) print(userList.__str__()) queryAll2(mysqlDb) # 修改 def update(mysqlDb): cursor = mysqlDb.cursor() try: cursor.execute("update tb_user set name='helloWorld' where id = 2") finally: mysqlDb.commit() update(mysqlDb) # delete语句 def delete(mysqlDb): cursor = mysqlDb.cursor() try: cursor.execute("delete from tb_user where id = 3") finally: mysqlDb.commit() delete(mysqlDb) queryAll(mysqlDb)pyMysql
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2 中则使用 mysqldb。
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。
使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。
PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。
如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:
$ pip install PyMySQL # pyMysql import pymysql db = pymysql.connect( host='localhost', user='root', password='Lh_198571', database='db_python' ) # 查询 def query(): # 创建游标对象 cursor = db.cursor() # 执行查询方法 cursor.execute("select * from tb_user") # 获取到元组 result = cursor.fetchall() print(type(result)) print(result) # 插入 第一个参数不能为默认参数 def insert(name, sex, mdb=db): cursor = mdb.cursor() try: print("insert into tb_user(name,sex) values('" + name + "'," + str(sex) + ")") cursor.execute("insert into tb_user(name,sex) values('" + name + "'," + str(sex) + ")") finally: mdb.commit() insert('a1', 10) # 删除 def delete(id, mdb=db): cursor = mdb.cursor() try: cursor.execute("delete from tb_user where id = 5") finally: mdb.commit() delete(5) # 修改 def update(id, mdb=db): cursor = mdb.cursor() try: cursor.execute("update tb_user set name ='aaaaa' where id=" + str(id)) finally: mdb.commit() # 根据id 查询一调数据 def getOne(id, mdb = db): cursor = mdb.cursor() cursor.execute("select * from tb_user where id=" + str(id)) result = cursor.fetchone() # tuple 元组 print(type(result)) print(result) getOne(4) update(6) query()