pymysql 在python3.x 中用于连接MySQL服务器的一个库;Python2中则使用mysqldb

pymysql的模块的基本的使用

# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()
# 定义要执行的SQL语句
sql = """
CREATE TABLE USER1 (
id INT auto_increment PRIMARY KEY ,
name CHAR(10) NOT NULL UNIQUE,
age TINYINT NOT NULL
)ENGINE=innodb DEFAULT CHARSET=utf8;
"""
# 执行SQL语句
cursor.execute(sql)
# 关闭光标对象
cursor.close()
# 关闭数据库连接
conn.close()

 

如果想要返回的是字典格式的数据,则光标

# 得到一个可以执行SQL语句并且将结果作为字典返回的游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

2. SQL注入问题
  1. SQL语句在程序中是字符串,动态拼接的字符串,拿用户输入的内容去拼接字符串

  拿用户输入的内容去拼接字符串,会造成一下的问题: --(在SQL语句中表示注释)

  2. 不要自己拼接字符串

例子:用数据库来练习登录

import pymysql

# # 用数据库来做登录的练习;
#
# username = input("请输入用户名")
# password = input("请输入密码")
#
#
# 连接数据库,获得连接;
conn = pymysql.connect(
host="127.0.0.1", #数据库的id;
port=3306, #数据库的端口号,是int类型的;
user="root", #登录数据库的用户名;
password="123456", #登录数据库的密码;
database="userinfo", #登录后要查看哪个数据库;
charset="utf8" #编码没有-;
)
#
# 获得一个可以执行 SQL语句 的光标对象(cursor);
# cursor = conn.cursor()
# 指定一个具体的光标,返回数据为字典的格式;
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # # 定义要执行的sql语句;
# sql = "select * from info where username=%s and password=%s;" #%s 只是用来占位;
# #数据库可以按照条件来寻找,
#
# #真正的执行sql语句;
# ret = cursor.execute(sql,[username,password])
# #这里让pyMySQL 帮我们传入参数,为了不让我们自己拼接,从而造成 sql注入;
#
#
# # ret 为返回结果,如果输入的用户名和密码在数据库里面能找到的话,就返回这一行的数据,即返回值不为空;
# # 找不到,则为空;
# if ret:
# print("登录成功")
# else:
# print("登录失败") # 批量操作;
# sql = "insert into user_info(username, password) value(%s,%s);"
sql = "select * from user_info"
cursor.execute(sql) #返回的不是具体的数据,而是受影响的行数; ret = cursor.fetchmany(3) #获得指定数量的数据;fetchone获得一条数据;
print(ret)
# cursor.scroll(1,mode="absolute") #绝对移动,写多少就是移到多少
cursor.scroll(-1,mode="relative") #相对定位,就是相对 光标 当前的位置,整数 是向下移动, 负数 是向上移动;
# # 根据光标取值,取光标下面的值;
ret = cursor.fetchall() #获得所有的数据;
print(ret) # data = [("alex","18"),("egn","22"),("yuan","22")]
# # executemany就是同时执行对个数据,传入的数据必须是 可迭代的
# cursor.executemany(sql,data) #内部实现for循环;
# conn.commit() # 执行SQL语句的时候,报错的话,把它捕捉起来;
# try:
# cursor.executemany(sql,data) #内部实现for循环;
#
# for i in [("a",18),("b"),("c",16)]:
# cursor.execute(sql,i)
# # 改变表里面的数据的时候,需要提交数据;
# conn.commit()
#
# except Exception:
# #有异常,也就是有错误的时候,SQL语句全部都不执行,就像事件一样, # conn.rollback() #回滚
# 一组sql语句批量执行, 要么全部执行成功,要么全部执行失败
cursor.close()
conn.close()

  

  

Python连接MySQL数据库之pymysql模块的更多相关文章

  1. Mysql(九):Python连接MySQL数据库之pymysql模块使用

    Python3连接MySQL 本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用. PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服 ...

  2. Python连接MySQL数据库之pymysql模块使用

    安装PyMySQL pip install pymysql PyMySQL介绍 PyMySQL是在python3.x版本中用于连接MySQL服务器的一个库,2中则使用mysqldb. Django中也 ...

  3. python 连接mysql数据库:pymysql

    示例:import pymysql conn=pymysql.connect( host="127.0.0.1", #数据库IP port=3306, #数据库端口 user=&q ...

  4. pymysql模块使用---Python连接MySQL数据库

    pymysql模块使用---Python连接MySQL数据库 浏览目录 pymysql介绍 连接数据库 execute( ) 之 sql 注入 增删改查操作 进阶用法 一.pymysql介绍 1.介绍 ...

  5. Python 3.5 连接Mysql数据库(pymysql 方式)

    由于 MySQLdb 模块还不支持 Python3.x,官方的Mysql连接包只支持到3.4,所以 Python3.5 如果想连接MySQL需要安装 pymysql 模块. pymysql 模块可以通 ...

  6. Python连接MySQL数据库的多种方式

    上篇文章分享了windows下载mysql5.7压缩包配置安装mysql 后续可以选择 ①在本地创建一个数据库,使用navicat工具导出远程测试服务器的数据库至本地,用于学习操作,且不影响测试服务器 ...

  7. python入门(十七)python连接mysql数据库

    mysql 数据库:关系型数据库mysql:互联网公司 sqllite:小型数据库,占用资源少,手机里面使用oracle:银行.保险.以前外企.sybase:银行+通信 互联网公司key:valuem ...

  8. 0x09 Python连接MySQL数据库

    本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用. PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中 ...

  9. python连接mysql数据库,并进行添加、查找数据

    1.删除MySQL数据表中的记录 DELETE FROM table_name WHERE condition; python操作mysql1数据库 import pymysql # 连接mysql数 ...

随机推荐

  1. java详细剖析

    1·类型加载主动初始化和被动初始化两种,通过访问静态变量或者给静态变量赋值都是可以使类初始化,如果有继承关系,所依赖的父类都会被动初始化. 2·如果在类的静态变量中添加final关键字,那这个变量就会 ...

  2. table-一列细分为多列(合并单元格)

    这个是一个很常见的一个表格展示需求,其中最要的就两个属性 rowspan 和 colspan .他们分别就是合并行 与 合并列. 要做的效果是如图下面这个,联系电话就是合并了单元格.这个说法类似于ex ...

  3. 选择排序(JAVA实现)

    算法思想:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录 ...

  4. mac环境使用ATS验证

    https://blog.csdn.net/skylin19840101/article/details/53760146 参考的这篇文章,用 /usr/bin/nscurl --ats-diagno ...

  5. C#基础加强(6)之引用相等与运算符重载

    引用相等 介绍 在 C# 中可以通过 object.ReferenceEquals(obj1, obj2) 方法来判断两个变量引用的是不是同一个地址,如果是,那么就是引用相等. 引用相等是针对引用类型 ...

  6. CJSON create.c

    #include <stdio.h> #include "cJSON.h" /* { "semantic": { "slots" ...

  7. Cocos Creator (webgl模式下怎么让canvas背景透明)

    项目中构建出web-mobile包后,打开main.js 在main.js中加入如下两行即可让canvas变透明 cc.director.setClearColor(new cc.Color(0,0, ...

  8. Cocos Creator_继承组件单例

    前言 单例,在游戏开发中是比较常用的功能,全局唯一,可以在任何地方直接获取, 省去了方法赋值 或者 属性面板拖动的麻烦. 普通单例_饿汉模式 不管有没调用,一开始就创建单例 1 // Singleto ...

  9. JFinal框架

    FJinal过滤器(tomcat) 创建java类继承JFinalConfig 会实现六个方法(有一个是拦截器的方法好像是,那个我好像看的跟struts2一样但是又没看懂暂时不写) Controlle ...

  10. springboot引入AOP

    AOP是Aspect Oriented Programming的缩写,意为面向切面编程.通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是spring框架的一个重要内容,她通过对 ...