pymysql实现MySQL与Python交互

常见MySQL操作

所需模块:

1 pip3  install pymysql

查询(fetchone,fetchmany,fetchall):

import   pymysql
#连接
con = pymysql.connect(host=‘localhost‘,user=‘root‘,passwd=‘admin‘,db=‘db1‘,charset=‘utf8‘)
# 游标
cur = con.cursor()
sql = ‘select * from USER ‘
cur.execute(sql)
#获取第一条数据
row_one= cur.fetchone()
#获取任意多条数据,默认从第一条数据作为开始
row_many = cur.fetchmany(3)
# 获取所有数据
row_all = cur.fetchall()
cur.close()
con.close()
print(row_one)
print(row_many)
print(row_all)

插入、更新、修改(最后需要提交)

 1 import pymysql
 2 conn=pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘admin‘,database=‘db1‘)
 3 cursor=conn.cursor()
 4 sql=‘insert into user(name,password) values("xxx","123");‘
 5 rows=cursor.execute(sql)
 6 print(cursor.lastrowid) #在插入语句后查看最新一条记录id
 7 # pymysql.connect 类默认开启了事务,因此对表进行修改、更新、删除、插入操作时需要提交事务才可以生效
 8 conn.commit()
 9 cursor.close()
10 conn.close()

SQL注入

名词解释:

  SQL注入是对Python与MySQL进行动态数据校验时,用户故意输入非法字段,从而绕过数据校验的行为。

 1 import pymysql
 2 user=input(‘用户名: ‘).strip()
 3 pwd=input(‘密码: ‘).strip()
 4
 5 #链接
 6 conn=pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘admin‘,database=‘db1‘,charset=‘utf8‘)
 7 #游标
 8 cursor=conn.cursor() #执行完毕返回的结果集默认以元组显示
 9 #执行sql语句
10 sql=‘select * from user where name="%s" and password="%s"‘ %(user,pwd) #注意%s需要加引号
11 print(sql)
12 res=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目
13 cursor.close()
14 conn.close()
15
16 if res:
17     print(‘登录成功‘)
18 else:
19     print(‘登录失败‘)

正常情况下的输入过程:

故意绕过验证的非法输入

  当知道用户名时:

虽然知道密码,但输入的密码不匹配却成功登陆。

  用户名和密码都不知道时:

虽然不知道用户名和密码,却成功登陆。

  SQL注入的中心思想就是人为的输入SQL语句中的特殊字符串,绕过验证。"--"在MySQL中为注释字符,通过此方法可以屏蔽部分代码,从而绕过验证。

  解决办法:

  使用MySQL的内置方法校验输入字符串的合法性,提高安全性。

 1 import pymysql
 2 user=input(‘用户名: ‘).strip()
 3 pwd=input(‘密码: ‘).strip()
 4
 5 #链接
 6 conn=pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘admin‘,database=‘db1‘,charset=‘utf8‘)
 7 #游标
 8 cursor=conn.cursor() #执行完毕返回的结果集默认以元组显示
 9 #执行sql语句
10 sql=‘select * from user where name=%s and password=%s‘#注意%s没有加引号
11 print(sql)
12 res=cursor.execute(sql,[user,pwd]) #执行sql语句,返回sql查询成功的记录数目
13 cursor.close()
14 conn.close()
15 if res:
16     print(‘登录成功‘)
17 else:
18     print(‘登录失败‘)

  校验验证:

  成功解决SQL注入问题。

时间: 2024-11-12 01:36:05

pymysql实现MySQL与Python交互的相关文章

MySQL和Python交互

与Python交互 python3模块名:pymysql conda install pymysql conda install sqlalchemy python2模块名:MySQLdb import pymysql # 1.创建与数据库连接对象 db = pymysql.connect(host='localhost', user='haoen110', password='123', database='db4', charset='utf8') # 2.利用db方法创建游标对象 cur

mysql数据库----python操作mysql ------pymysql和SQLAchemy

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy 一.pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import pymysql 4 5 # 创建连接 6 conn = pymysql.connect(

python基础学习24----使用pymysql连接mysql

使用pymysql连接mysql 安装pymysql pymysql安装可以通过两种方式 使用pip安装 首先简单说一下pip的使用方法 获取帮助 pip --help 升级 pip pip install -U pip 安装包 pip install SomePackage 卸载包 pip uninstall SomePackage 升级指定的包 pip install -U SomePackage 搜索包 pip search SomePackage 查看指定包的详细信息 pip show

python数据库-MySQL与python的交互(52)

一.python3中安装PyMySQL模块 命令安装: sudo apt-get install python-mysql 或者 pip install pymysql 2.使用在pyCharm中安装PyMySQL模块 二.PyMysql对象说明 1.Connection对象 用于建立与数据库的连接 创建对象:调用connect()方法 conn=connect(参数列表) 参数host:连接的mysql主机,如果本机是'localhost' 参数port:连接的mysql主机的端口,默认是33

django1.6.x(python3.3)使用pymysql连接mysql

1.安装 pymysql,地址:https://code.google.com/p/pymysql/ 2.安装django 然后执行 django-admin.py startproject mysite 3.在project的__init__.py中加如下面的语句 try: import pymysql pymysql.install_as_MySQLdb() except ImportError: pass 4.运行python manage.py runserver 即可. django1

How to Access MySQL with Python Version 3.4

http://askubuntu.com/questions/630728/how-to-access-mysql-with-python-version-3-4 How to Access MySQL with Python Version 3.4 up vote0down votefavorite Python comes in two versions: Python 2.7.6 which has now been superseded by Python 3.4.0. The crit

flask + pymysql操作Mysql数据库

安装flask-sqlalchemy.pymysql模块 pip install flask-sqlalchemy pymysql 安装Mysql数据库 from flask.ext.sqlalchemy import SQLAlchemy from flask import Flask '''配置数据库''' app = Flask(__name__) app.config['SECRET_KEY'] ='hard to guess' # 这里登陆的是root用户,要填上自己的密码,MySQL

Python 交互模式中 Delete/Backspace 键乱码问题

进入 Python 交互模式,按下 Delete/Backspace 键,会出现 ^H 字符 解决方式: 1. 进到 Python 的Modules目录 [[email protected] Python-2.7.12]# pwd/root/Python-2.7.12[[email protected] Python-2.7.12]# cd Modules/ 2. 取消文件中 readline 部分对应的注释 vim Setup readline readline.c -lreadline -l

在Ubuntu上安装Mysql For Python

安装: 首先安装pip,并且把pip更新到最小版本 apt-get install python-pip pip install -U pip 安装mysql开发包 apt-get install python-dev libmysqlclient-dev 通过pip安装Mysql For Python pip install MySQL-python 测试,在Python命令行里输入import MySQLdb,看报不报错 [email protected]:~$ python Python