美文网首页
MySQL(四)

MySQL(四)

作者: w_wm_m | 来源:发表于2018-10-27 14:47 被阅读0次

与Python交互

使用pymysql来代替MySQLdb模块,它们用法非常相似。

Connection对象

  • 用于创建数据库的连接
  • 创建对象调用connect()方法
connection = pymysql.connect(
        host = 'localhost',
        user = 'root',
        password = 'password',
        database = 'learn',
        port = 3306,
        charset='utf8'
    )
# connection = pymysql.connect(参数)
pymysql.png
connection对象的方法:
  • close():关闭连接
  • commit():事务,提交生效
  • rollback():事务,放弃之前的操作
  • cursor():返回cursor对象,用于执行sql语句并获得结果

Cursor()对象

  • 执行sql语句
  • 创建对象:调用Connection对象的cursor()方法
cursor = connection.cursor()

cursor对象的方法:

  • close():关闭
  • execute(sql):执行sql语句,返回受影响的行数
  • fetchone():执行查询语句时,获取查询结果集的第一行数据,并以元组的形式返回
  • fetchall():执行查询语句时,获取数据结果集的所有行,将每行构成一个元组,在将这些元组放入一个元组里返回
  • next():执行查询语句时,获取当前行的下一行
  • scroll(value[,mode]):将行指针移动到某个位置
          * mode:表示移动方式
          * mode的默认值为relative,表示基于当前行移动到value,value为正则向下移动,value为负则向上移动
          * mode的值为absolute,表示基于第一条数据的位置,第一条数据的位置为0

cursor对象的属性:

  • rowcount:只读属性,表示最近一次execute()执行后受影响的行数
  • connection:获得当前连接对象

需要注意的是,pymysql默认开启事务,所以执行DML操作时需要commit或rollback

总结:
      连接数据库(创建Connection对象)→创建游标(创建cursor对象)→执行SQL(使用cursor)→fetch获得数据,进行业务处理(使用cursor)→关闭游标→commit(使用connection)→关闭数据库连接

import pymysql

try:
    connection = pymysql.connect(
        host = 'localhost',
        user = 'root',
        password = 'password',
        database = 'learn',
        port = 3306,
        charset='utf8'
    )

    cursor = connection.cursor()

    sql = 'insert into students(name) value("jtt")'

    cursor.execute(sql)

    connection.commit()

    cursor.close()

    connection.close()

except Exception as e:
    print(e)

参数化

     一种解决sql注入的方式。
     SQL注入:针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。

sql注入.png
     通过分析可以知道用户如果输入了一些意外的字符,那么会导致不安全的问题出现,如图所示,通过拼凑sql语句用户可以获得所有信息。所以不得不在后台处理数据时,考虑到这些问题。为此引进了参数化。
import pymysql

name = input("name:")

params = [name]

try:
    connection = pymysql.connect(
        host = 'localhost',
        user = 'root',
        password = '199711',
        database = 'learn',
        port = 3306,
        charset='utf8'
    )

    cursor = connection.cursor()

    sql = "select * from students where name=%s"

    cursor.execute(sql,params)

    result = cursor.fetchall()

    cursor.close()

    connection.close()

    print(result)

except Exception as e:
    print(e)

     需要注意的是,%s是一个占位符需要和格式化输出区别,无论是什么数据类型都要使用%s占位,params是一个列表,存放变量。

相关文章

  • MySQL忘记密码

    MySQL修改密码的四种方式 1. 用SET PASSWORD命令 登录MySQL 输入命令格式 : mysql>...

  • 收藏-MySQL

    # MySQL的并发控制与加锁分析# MySQL的四种事务隔离级别# mysql共享锁与排他锁

  • MySQL(四)

    与Python交互 使用pymysql来代替MySQLdb模块,它们用法非常相似。 Connection对象 用于...

  • mysql(四)

    mysql的权限管理 如何给开发授权 开发人员说请给我开一个用户? grant select on 业务库.表名 ...

  • YUM快速安装MySQL

    一、yum仓库下载MySQL 二、yum安装MySQL 三、启动MySQL服务 四、查找初始密码 五、登录MySQ...

  • (夜食)MySql四种引擎的区别

    二,MySQL引擎的区别 MySQL有四种引擎:ISAM , MyISAM,HEAP,InnoDBISAM :IS...

  • MySQL数据库基础详解(非原创)

    文章大纲 一、数据库简介二、Mysql数据库简介三、Mysql安装与服务启动(Windows版本)四、Mysql图...

  • mysql小记

    MySQL中key 、primary key 、unique key 与index区别: MySQL中有四种Key...

  • MySQL主从介绍、准备工作、配置主、配置从、测试主从同步

    目录 一、MySQL主从介绍二、准备工作三、配置主四、配置从五、测试主从同步 一、MySQL主从介绍 MySQL主...

  • 数据库安装

    一,数据库简介 二,yum源安装mysql 三,源码安装mysql 四,mysql自带连接命令及更改密码 五,my...

网友评论

      本文标题:MySQL(四)

      本文链接:https://www.haomeiwen.com/subject/gfhdtqtx.html