Python高级之操作Mysql
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()