首页 > 数据库 >MySQL之pymysql模块

MySQL之pymysql模块

时间:2024-03-03 19:23:25浏览次数:21  
标签:rows MySQL pymysql cursor 模块 sql print password

Navicat软件

我们在终端操作MySQL,既没有自动操作也无法保存,不方便开发,所以我们使用Navicat,Navicat内部封装了所有的操作数据库的命令。我们在使用它的时候只需要鼠标点击即可完成操作,无需书写SQL语句。

详细参考:Day 48 - 04 navicat基本使用_哔哩哔哩_bilibili

注释语法

在navicat中如何快速的注释和解注释
  ctrl + ?   加注释
  ctrl + ?   基于已经有注释的情况下再来一次就是解开注释
  无果你的navicat版本不一致还有种可能是
  ctrl + shift + ?   解开注释

pymysql

import pymysql

conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='111111',
    database='day02',
    charset='utf8'  # 编码千万不要加-
)  # 链接数据库

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 产生一个游标对象(就是用来帮你执行命令的)
"""
cursor=pymysql.cursors.DictCursor将查询结果以字典的形式返回
"""
sql = 'select * from emp;'
res = cursor.execute(sql)
# print(res) # execute返回额是你当前sql语句所影响的行数,该返回值一般不用

# 获取命令执行的查询结果
print(cursor.fetchone())  # 只拿一条  读取数据类似于光标的移动 得到数据本身
cursor.scroll(1,'relative')  # 相对于光标所在的位置继续往后移动1位  
cursor.scroll(1,'absolute')  # 相对于数据的开头继续往后移动1位
print(cursor.fetchall())  # 拿所有  得到列表套多个数据
print(cursor.fetchmany(2))  # 可以指定拿几条

SQL注入

"""
利用一些语法的特性,书写一些特点的雨具实现固定的语法
MySQL利用的是MySQL的注释语法:select * from user_info where name ='xiao' -- iinbdfwuei' and password = ''
"""
日常生活中很多软件在注册的时候都不能含有特殊符号,因为怕你构造出特定的语句入侵数据库,不安全


如何解决SQL注入?
# 敏感的数据不要自己做拼接,交给execute方法帮你拼接即可
import pymysql

conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='111111',
    database='day45',
    charset='utf8'  # 编码千万不要加-
)  # 链接数据库

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

username = input('>>>: ').strip()
password = input('>>>: ').strip()
sql = "select * from user_info where name =%s and password = %s"  # 或者使用 % (username, password),下面的(username, password)就不需要加了。但是这种方法会引起SQL注入
# 不要手动拼接数据,先用%s占位,之后将需要拼接的数据直接交给execute方法即可
print(sql)
rows = cursor.execute(sql,(username,password))  # 自动识别sql里面的%s用后面元组里面的数据替换
if rows:
    print('登陆成功')
    print(cursor.fetchall())
else:
    print('用户名密码错误')

pymysql补充

# 针对增删改,pymysql需要二次确认才能真正的操作数据
import pymysql

conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='111111',
    database='day45',
    charset='utf8',  # 编码千万不要加-
    autocommit=True  # 自动提交
)  # 链接数据库
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 增
sql = "insert into user_info(name,password) values(%s,%s);"
# 第一种
rows = cursor.execute(sql,('abc',123))
# 第二种
rows = cursor.executemany(sql,[('abb',123),('qwe',111)])  # 批量增加
print(rows)
conn.commit()  # 确认

# 删
sql = "delete from user_info where id=1;"
rows = cursor.execute(sql)
print(rows)
conn.commit()

# 改
sql = "update user_info set name='xiaoNB' where id=2;"
rows = cursor.execute(sql)
print(rows)
conn.commit()

# 查
sql = "select * from user_info;"
rows = cursor.execute(sql)
print(cursor.fetchall())


"""
增删改查中
    删改查他们的操作涉及到数据的修改
    需要二次确认
"""

# 还可以一次性插入N多条数据
rows = cursor.executemany(sql,[('abb',123),('qwe',111)])  # 批量增加

标签:rows,MySQL,pymysql,cursor,模块,sql,print,password
From: https://www.cnblogs.com/xiao01/p/18050501

相关文章

  • MySQL之多表操作
    第一步:创表#建表createtabledep( idintprimarykeyauto_increment,namevarchar(20));createtableemp( idintprimarykeyauto_increment,namevarchar(20),sexenum('male','female')notnulldefault'male',......
  • MySQL之视图、触发器、存储过程、函数和流程控制
    视图什么是视图视图就是通过查询得到一张虚拟表,然后保存下来,下次可以直接使用其实视图也是表为什么要用视图如果要频繁的操作一张虚拟表(拼表组成的),你就可以制作成视图,后续直接操作如何操作#固定语法createview表名as虚拟表的查询SQL语句#具体操作create......
  • 从零开始学Spring Boot系列-集成MySQL
    在SpringBoot中集成MySQL是为了让开发者能够轻松地与MySQL数据库进行交互。本篇文章将指导你如何在SpringBoot3.2.3项目中使用Gradle来集成MySQL。在此之前,我们需要在Ubuntu22.04上安装MySQL8作为我们的数据库服务器。安装MySQL8本文是在wsl2上的Ubuntu22.04上安装MySQL8.......
  • MySQL之筛选和过滤条件
    开局第一步:创表createdatabaseday03;useday03;createtableemp( idintnotnulluniqueauto_increment,namevarchar(20)notnull,sexenum('male','female')notnulldefault'male',ageint(3)unsignednotnulldefau......
  • MySQL之约束条件
    表完整性约束介绍:约束条件与数据类型的宽度一样,都是可选参数作用:用于保证数据的完整性和一致性主要分为:DEFAULT为该字段设置默认值NOTNULL标识该字段不能为空UNIQUEKEY(UK)标识该字段的值是唯一的AUTO_INCREMENT标识该字段的值自动增长(整数类型,而且为主......
  • Linux安装Docker并搭建MySql、Redis、RabbitMQ
    1.1安装docker(1)删除老版本sudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\......
  • MySQL之基本数据类型
    数据类型:类型类型举例整数类型TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT浮点类型FLOAT、DOUBLE定点数类型DECIMAL位类型BIT日期时间类型YEAR、TIME、DATE、DATETIME、TIMESTAMP文本字符串类型CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMT......
  • Docker启动MySQL容器自动停止问题
    可能是mysql使用的内存过多,导致系统杀死了对应的进程mysql启动后设置限制内存在宿主机任意位置下:vimdocker.cnf写入:skip-host-cacheskip-name-resolveperformance_schema_max_table_instances=400table_definition_cache=400table_open_cache=256performance_......
  • MySQL安装
    下载mysql官网地址:https://dev.mysql.com/downloads/mysql/配置解压文件解压下载好的压缩文件解压后目录中可能没有my.ini文件,自己创建一个使用记事本打开my.ini文件[mysqld]port=3306basedir=C:\ProgramFiles\MySQLdatadir=C:\ProgramFiles\MySQL\Datamax......
  • 新电脑装编程配置(jdk、MySQL、navicat、idea、Maven、gitee、环境配置)
    一、JDK(java运行环境,不安装不能在自己电脑上运行java语言)1.打开安装包     2.选择安装目录(建议选择非系统盘)      3.安装JRE(最好和JDK分开文件夹、建议选择非系统盘)     4.提示安装成功     配置环境变量:JAVA......