数据库之Python操作MySQL

一、引言

  Python操作MySQL一共有两种方式,第一种是用原生模块pymysql和mysqldb,这两种模块在py2中都支持,但是在py3中只支持pymysql,但是pymysql可以通过pymysql.install_as_MySQLdb()的方式构造成和mysqldb一样的使用;第二种方式是ORM框架 SQLAchemy。

二、pymysql

下载安装

pip install pymysql 

增、删、改

import pymysql

# 增,删,改除了sql语句不同,使用的方式一致
conn = pymysql.connect(host="localhost",user=‘root‘,password=‘‘,database="db2")   #连接mysql
cursor = conn.cursor()      #创建游标
sql = "insert into userinfo(username,password) values(%s,%s)"    #sql语句
#r表示执行这条语句受影响的行数r = cursor.execute(sql ,[‘wusir‘,‘123‘]) #r = cursor.executemany(sql ,[(‘jack‘,‘213‘),(‘tom‘,‘234‘)]) #表示插入多条数据,只有在插入数据的时候才使用executemany
conn.commit()   #增删改执行一定要加conn.commit()
cursor.close()   #关闭游标
conn.close()  #关闭连接

# 查
conn = pymysql.connect(host="localhost",user=‘root‘,password=‘‘,database="db2")
# cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)    #使用这种游标查出来的数据是列表套子典cursor = conn.cursor()       #使用这种游标查出来的数据是元祖套元祖
sql = "select * from userinfo"
cursor.execute(sql)

#cursor.scroll(1,mode=‘relative‘)  # 让游标相对当前位置移动
#cursor.scroll(2,mode=‘absolute‘)  # 让游标相对绝对位置移动
#result = cursor.fetchone()     # 取一个数据
#print(result)
#result = cursor.fetchmany(4)   #取指定数目的数据
#print(result)result = cursor.fetchall()    #取查出来的所有数据print(result)
cursor.close()
conn.close()

#PS:每取一个数据游标就会向下移动一位

# 新插入数据的自增ID: cursor.lastrowid# 如当有一个主从表时,从表要根据主表的id变化来插入数据,这时可以使用cursor.lastrowid来获取最新插入的主表id。

避免mysql注入

  写一个很简单的基于mysql的登录程序,数据库里面只有一个user为alex,pwd为123,当使用第一种写法时会出现mysql注入的情况。

import pymysql

user = input(‘>>请输入用户名:‘)
pwd = input(‘>>请输入密码:‘)

conn = pymysql.connect(host=‘127.0.0.1‘,user=‘root‘,password=‘‘,database=‘db2‘)
cursor = conn.cursor()

#第一种写法(不可以)
sql = "select * from userinfo where name=‘%s‘ and pwd=‘%s‘"%(user,pwd)
cursor.execute(sql)
res = cursor.fetchone()
print(res)

#第二种写法(可以)sql = "select * from userinfo where name=%s and pwd=%s"cursor.execute(sql,[user,pwd])res = cursor.fetchone()print(res)

#第三种写法(可以)sql = "select * from userinfo where name=%(u)s and pwd=%(p)s"cursor.execute(sql,{‘u‘:user,‘p‘:pwd})res = cursor.fetchone()print(res)
if res:   print(‘登陆成功‘) else:   print(‘登陆失败‘)

  这就是mysql注入,因为mysql中的注释是--,使用这种字符串拼接会将后面的语句注释掉,同时1=1成立,这样就会出现即使没有这个用户也会登录成功。

原文地址:https://www.cnblogs.com/wusir66/p/10121777.html

时间: 2024-10-10 08:18:10

数据库之Python操作MySQL的相关文章

python操作mysql数据库

连接数据库 输入值 存入数据库 关闭 import string import mysql.connector conn=mysql.connector.connect(user='root',password='test',database='dalian',use_unicode=True) cursor=conn.cursor() a=raw_input('enter an id: ') b=raw_input('enter a name: ') while(a!='quit' or b!

Windows下安装MySQLdb, Python操作MySQL数据库的增删改查

这里的前提是windows上已经安装了MySQL数据库,且配置完毕,能正常建表能操作.在此基础上只需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了,只有1M多.这个有点类似jdbc里的那个jar包. 下载链接:http://sourceforge.net/projects/mysql-python/ , 百度云盘 :http://pan.baidu.com/s/1dDgnfpR 密码:7bna 接着import MySQLdb就能使用了,下面给出测试代码:

使用python操作mysql数据库

这是我之前使用mysql时用到的一些库及开发的工具,这里记录下,也方便我查阅. python版本: 2.7.13 mysql版本: 5.5.36 几个python库 1.mysql-connector-python 是MySQL官方的Python驱动 https://dev.mysql.com/doc/connector-python/en/ 安装: pip install mysql-connector 示例代码: https://github.com/mike-zhang/pyExample

python操作mysql数据库(一)

最近又开始重新学习python,研究了一些python操作mysql数据库的知识,记录在此,用作学习笔记, 基础环境:Python 3.5.1 mysql版本:5.6.35 (rpm安装方式) 操作系统:Centos7.3 和windows7 一.python连接数据库模块介绍: 目前主要用的有以下几种.MySQLdb和pymsql以及mysql官方提供的mysql-connector-python驱动,MySQLdb模块是python2.X使用比较多的,而python3.X使用的pymsql会

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操作mysql数据库

python操作mysql数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase 你可以访问Python数据库接口及API查看详细的支持数据库列表. 不同的数据库你需要下载

Linux下使用Python操作MySQL数据库

安装mysql-python 1.下载mysql-python 打开终端: cd /usr/local sudo wget http://nchc.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.2.tar.gz 官网地址:http://sourceforge.net/projects/mysql-python/ 2.解压 sudo tar -zxvf MySQL-python-1.2.2.tar.gz cd MySQL-

python 操作mysql数据库之模拟购物系统登录及购物

python 操作mysql数据库之模拟购物系统登录及购物,功能包含普通用户.管理员登录,查看商品.购买商品.添加商品,用户充值等. mysql 数据库shop 表结构创建如下: create TABLE userinfo ( u_id int(10) not null auto_increment, u_name varchar(35), u_passwd varchar(35), money decimal(10,2), role int(5), primary key(u_id) )CHA

python + docker, 实现天气数据 从FTP获取以及持久化(二)-- python操作MySQL数据库

前言 在这一节中,我们主要介绍如何使用python操作MySQL数据库. 准备 MySQL数据库使用的是上一节中的docker容器 “test-mysql”. Python 操作 MySQL 我们使用的IDE是 “神奇” 的 pycharm: 1. 首先新建一个python的项目,并且安装 “mysql-connector-python”. “mysql-connector-python” 是MySQL官方对于python的数据驱动,感兴趣的童鞋可以移步这里: https://dev.mysql