准备工具:mysql数据库,pymysql库,python编辑器(pycharm或者vscode都可以)
- 数据库安装
首先是mysql数据库的安装,这个可以直接去官网安装,详情安装链接可以参考数据库安装
- pymysql库安装
这个简单直接在全局变量下或者在你自己创建的虚拟环境下pip install pymysql。
安装好了之后在编辑器中导入pymysql如果没报错的话就说明安装成功了。
import pymysql
- 连接mysql数据库
import pymysql
# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306)
# 创建可执行游标
cursor = db.cursor()
因为我的数据库在安装的时候创建了密码所以我这里添加了password参数,你们可以按照安装的数据库来选择输入那些参数
- 在MySQL中创建创建自己的数据库
# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306)
# 创建可执行游标
cursor = db.cursor()
# sql语句,创建一个test数据库,并设置编码格式为utf8mb4,至于为什么不设置utf8而是utf8mb4是因为,utf8识别不了一些图标,utf8mb4可以
sql = 'CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4'
# 尝试执行sql语句
try:
if cursor.execute(sql):
print('Successful')
# 如果创建失败会报出异常提醒你哪里出错了
except BaseException as e:
print('Failed:', e)
# 报出异常后数据库执行数据回调,这样不会改变数据库
db.rollback()
# 关闭数据库
db.close()
这样我们就在MySQL数据库里创建了一个test数据库
- 创建表格
# 连接MySQL数据库里的test数据库,添加了一个参数db,也就是数据库名的参数
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306, db='test')
# 创建可执行游标
cursor = db.cursor()
# 创建表的SQL语句,创建了一个students的表,并给定了三个字段(id, name, age)其中id和age是整数,name是字符串长度最大为255,设置了id字段为表的主键
sql = 'CREATE TABLE students (id INT NOT NULL, name VARCHAR(255) NOT NULL, age INT NOT NULL, PRIMARY KEY (id))'
# 执行SQL语句
cursor.execute(sql)
这样我们就在数据库里面成功创建了一个表
- 插入数据
import pymysql
# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306, db='test')
# 创建可执行游标
cursor = db.cursor()
# 将表名赋值给变量table
table = 'students'
# 要插入的数据
data = {
'id': 10086,
'name': '小黑',
'age': 21
}
# 对应表里的字段,注意这里转换成字符串时,要用,和空格隔开每个字符串
keys = ', '.join(data.keys())
# 一个字段就对应一个占位符,三个字段对应着数据字典里面的三个键
values = ', '.join(['%s'] * len(data))
# 插入数据SQL语句
sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)
# 执行SQL语句
try:
if cursor.execute(sql, tuple(data.values())):
print('Successful')
# SQL语句执行成功就调用commit方法,改变数据库
db.commit()
except:
print('Failed')
# 执行失败就执行rollback数据回滚,数据库不发生改变
db.rollback()
db.close()
这样我们就成功的插入了数据
- 更新数据
import pymysql
# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306, db='test')
# 创建可执行游标
cursor = db.cursor()
table = 'students'
# 我这里修改了age值,其他的值没变
data = {
'id': 10086,
'name': '小黑',
'age': 28
}
keys = ', '.join(data.keys())
values = ', '.join(['%s'] * len(data))
# 和插入数据时的SQL语句有点不同,增加了如果主键重复就执行更新,否则就插入
sql = 'INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE '.format(table=table, keys=keys, values=values)
# 用于更新时的字段比对
update = ','.join(['{key} = %s'.format(key=key) for key in data])
# 语句合并
sql += update
# 和之前 *** 作相同
try:
if cursor.execute(sql, tuple(data.values())*2):
print('Successful')
db.commit()
except:
print('Failed')
db.rollback()
db.close()
我们成功的将id为10086的这一行数据给更新了
- 数据查询
import pymysql
# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306, db='test')
# 创建可执行游标
cursor = db.cursor()
table = 'students'
# SQL查询语句,查询表格里满足age值大于18的全部字段
sql = 'SELECT * FROM {table} WHERE age > 18'.format(table=table)
# 执行SQL语句
try:
if cursor.execute(sql):
# 满足查询条件的第一个结果
result = cursor.fetchone()
# 查询到的行数
print('Count: ', cursor.rowcount)
# 逐条获取查询语句,每查询一次指针就偏移一次,简单高效
while result:
print(result)
result = cursor.fetchone()
except:
print('NOT FOUND DATA FROM STUDENTS')
db.close()
成功查询到了2个结果,其他查询条件语句可以自行去参考SQL查询条件语句大全比如字符串查询(LIKE)
- 删除数据
import pymysql
# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306, db='test')
# 创建可执行游标
cursor = db.cursor()
table = 'students'
# SQL语句删除students中age大于18的所有数据
sql = 'DELETE FROM {table} WHERE age > 18'.format(table=table)
try:
if cursor.execute(sql):
print('DELETE Successful')
# 因为删除数据改变了数据库,所以要执行commit方法
db.commit()
except:
print('NOT FOUND DATA FROM STUDENTS')
# 删除失败就执行数据回滚
db.rollback()
db.close()
我们成功的删除了满足条件的数据,pymysql的基本用法就是这些了,如果你想了解更多的话可以去查询pymysql官方文档
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)