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 testimport mysql.connectormysqlDb = 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中,每个标位为dictdef 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 = 0name = ''sex = 0def __init__(self,id, name, sex):self.id = idself.name = nameself.sex = sexdef __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# pyMysqlimport pymysqldb = 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()