Python操作MySQL(详细版)

Python操作MySQL

一、确定是否安装PyMSQL

复制代码
# 在Python中,要操作MysQL,需要依赖于第三方库:pymysql,先安装:pip install PyMySQL
# 在命令行中:pip list | findstr MySQL 检查是否有pymysql

上图显示没有PyMySQL。需要下载安装

二、准备好数据库

复制代码
host='192.168.102.131',user='root',password='123.com',database='woniusales'

测试是否连接成功:

检测端口号:

三、wireshark监听流量

python 复制代码
# 建立连接
conn = pymysql.connect(host='192.168.102.131',user='root',password='123.com',database='woniusales',charset='utf8')
print(conn.host_info)

监听数据库密码错误的流量包

监听数据库密码正确的流量包

四、以二维元组形式输出

python 复制代码
import pymysql

# 建立连接
conn = pymysql.connect(host='192.168.102.131',user='root',password='123.com',database='woniusales',charset='utf8')
# print(conn.host_info)

# 操作数据库,先定义一个游标对象,默认输出元组形式
cursor = conn.cursor()
# 执行SQL语句
sql = "select username,password,role from user"
cursor.execute(sql)

# 获取结果集
result = cursor.fetchall()
print(result) #输出是元组的形式

for row in result:
    print(row[0],row[1],row[2])

# 关闭连接
conn.close()

流量监听:

查看到查询的SQL语句

五、列表+字典 的格式获取结果集

python 复制代码
import pymysql

# 建立连接
from pymysql.cursors import DictCursor

conn = pymysql.connect(host='192.168.102.131',user='root',password='123.com',database='woniusales',charset='utf8')
# print(conn.host_info)

# #将游标对象定义为字典类型,进而通过 列表+字典 的格式获取结果集
# cursor = conn.cursor()
cursor = conn.cursor(DictCursor)
# 执行SQL语句
sql = "select username,password,role from user"
cursor.execute(sql)

# 获取结果集
result = cursor.fetchall()
# print(result) #输出是元组的形式
for row in result:
    print(row['username'],row['password'])

# 关闭连接
conn.close()

六、更新操作

修改图中密码

python 复制代码
import pymysql

# 建立连接
conn = pymysql.connect(host='192.168.102.131',user='root',password='123.com',database='woniusales',charset='utf8')
cursor = conn.cursor()
# 执行SQL语句,更新操作,比如修改某个用户的信息
# 更新的操作,必须确认提交,两种方式:一种是设置autocommit为True,另外则是在代码中显式提交
sql = "update user set password='wangwu' where userid=5"
cursor.execute(sql)
conn.commit() #显式执行更新操作
# 关闭连接
conn.close()

执行更新语句之后的数据库结果:

七、操作数据库中的信息

python 复制代码
from user_register.common import *

def do_reg():
    username = input("请输入用户名:")
    password = input("请输入密码:")
    phone = input("请输入手机号码:")
    result = query_mysql(f"select username from user where username='{username}'")
    if len(result) == 0:
        update_mysql(f"insert into user(username,password,phone) values('{username}','{password}','{phone}')")
    else:
        print("用户名已经存在,不允许注册。")

if __name__ == '__main__':
    do_reg()

封装SQL语句:

python 复制代码
# 针对数据库连接进行封装操作
def query_mysql(sql):
    conn = pymysql.connect(host='192.168.102.131', user='root', password='123.com', database='test',
                           charset='utf8')
    cursor = conn.cursor(DictCursor)
    cursor.execute(sql)
    result = cursor.fetchall()
    conn.close()
    return result

# 针对数据库连接进行封装操作
def update_mysql(sql):
    conn = pymysql.connect(host='192.168.102.131', user='root', password='123.com', database='test',
                           charset='utf8')
    cursor = conn.cursor(DictCursor)
    cursor.execute(sql)
    conn.commit()
    conn.close()
相关推荐
爱喝水的鱼丶1 小时前
SAP-ABAP:S/4 HANA ABAP 新特性入门:与 ECC ABAP 的核心差异、架构优势与学习路径规划
运维·数据库·性能优化·sap·abap·hana·开发交流
VidDown7 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
贵州诚鑫致达科技有限公司7 小时前
Linux的yum源怎么重启?源不是服务
linux·运维·服务器
余槐i7 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
数据库小学妹8 小时前
PostgreSQL表膨胀怎么办?autovacuum清不动的根因与排查命令
数据库·postgresql·表膨胀·mvcc·数据库运维
mister_guo8 小时前
MySQL-1267错误:排序规则冲突的原因与解决方案
数据库·mysql
骇客野人8 小时前
在麒麟操作系统上 分别安装 jdk1.8, 达梦数据库,redis ,memcache 的操作实施方案和步骤
数据库·redis·memcached
遇印记8 小时前
传输层,网络层
运维·服务器·网络·windows·学习
死磕音视频9 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
品牌常新9 小时前
景区巡逻机器人怎么选?派宝S5全地形守护解析
运维·人工智能·机器人