Mysql学习---Python操作Mysql 1231

安装PyMysql

安装PyMysql:Py3默认自带pip3安装,Py2默认无pip命令

cmd进入PyCharm的安装目录完成安装 pip3 install pymysql

安装完成的位置:E:\PyCharm 2017.2.4\Python3.2.5\Lib\site-packages

故障处理:更新一下默认的Python安装

Py下操作Mysql

PyMySQL   - 专门用于操作MySQLpython模块, Py2和Py3同时兼容

                   - MySQLdb(py3暂时不支持MySQLdb)

基本操作:添加信息——Insert

# -*- coding:utf-8 -*-
import pymysql

# 创建连接
conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, passwd=‘‘, db=‘test_python‘, charset=‘utf8‘)
# 创建游标
cursor = conn.cursor()  # 默认是元组,可以更改为字典类型
# 第一种:直接插入
# 执行SQL,并返回受影响行数
insert_effect_row = cursor.execute("insert into course(cname, teacher_id) VALUES (‘hhhh43hhkkhh‘, ‘2‘)")
inp = input(‘请输入姓名:‘)
inp2 = input(‘请输入教师ID:‘)
# 第二种:字符串拼接
# sql = ‘insert into course(cname) VALUES ("%s")‘ %inp
# cursor.execute(sql)                 # 字符串拼接可以用,但是容易造成sql注入不推荐使用
# 第三种:参数传递,利用%s做占位符号,传入参数进去,PyMysql内部帮我们转换
insert_effect_row_sec = cursor.execute("insert into course(cname, teacher_id) VALUES (%s, %s)", (inp, inp2))  # 参数传递
# 第四种: 多条信息的插入
li = [
    (‘哇哈哈1‘, 1),
    (‘哇哈哈2‘, 2),
    (‘哇哈哈3‘, 3),
]
executmany = cursor.executemany("insert into course(cname, teacher_id) VALUES (%s, %s)", li) # 传入可迭代的类型
print(‘executmany:‘, executmany)  # executmany: 3 ,修改成功3条
# 提交,不然无法保存新建或者修改的数据
conn.commit()
# 关闭游标
cursor.close()
# 关闭连接
conn.close()

基本操作:查找信息——Select

# -*- coding:utf-8 -*-
import pymysql
# 创建连接
conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, passwd=‘‘, db=‘test_python‘, charset=‘utf8‘)
# 创建游标
cursor = conn.cursor()
ret = cursor.execute(‘select * from student‘)  # 仅仅数据加载到内存,需要fetch取值
print(ret)  # 查找到结果的数量
# 第一种: 直接打印,数据量大的时候容易导致内存不够用(内部有一个指针索引)
# r = cursor.fetchall()
# print(‘取出所有值\n‘, r)  # 打印结果,结果是一个元组
# 第二种: 从内存中取出来1条数据,此时数据已经加载到内存
r1 = cursor.fetchone()
print(‘拿出一个\n:‘, r1)
# 第三种: 从内存中取出来3条数据,此时数据已经加载到内存
r3 = cursor.fetchmany(3)
print(‘拿出三个\n:‘, r3)
# 第四种:操作指针取出数据
# cursor.scroll(0, mode=‘relative‘)  # 相对位置,指针索引回归0, +1/-1 分别表示向上/向下
# r4 = cursor.fetchmany(3)
# print(‘相对索引拿出三个\n:‘, r4)   # 从第5个开始取值 : ((5, ‘女‘, 1, ‘张二‘), (6, ‘男‘, 1, ‘张四‘), (7, ‘女‘, 2, ‘铁锤‘))
cursor.scroll(0, mode=‘absolute‘)    # 绝对位置,指针索引回归0
r5 = cursor.fetchmany(3)
print(‘绝对索引拿出三个\n:‘, r5)     # 从第0个位置开始取值: ((1, ‘男‘, 1, ‘理解‘), (2, ‘女‘, 1, ‘钢蛋‘), (3, ‘男‘, 1, ‘张三‘))
# 关闭游标
cursor.close()
# 关闭连接
conn.close()

基本操作:更改信息——Update

# -*- coding:utf-8 -*-
import pymysql

# 创建连接
conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, passwd=‘‘, db=‘test_python‘, charset=‘utf8‘)
# 创建游标
cursor = conn.cursor()
inp  = input(‘请输入更新后的信息:‘)
ret  = cursor.execute("update course set cname = %s where cname = ‘哇哈哈4‘", inp)
ret2 = cursor.execute("update course set cname = %s where cname = ‘哇哈哈1‘", inp)
# 提交,不然无法保存新建或者修改的数据
conn.commit()
print(‘不存在且更新结果:‘, ret, ‘\r\n存在且更新结果:‘, ret2)
# 关闭游标
cursor.close()
# 关闭连接
conn.close()

基本操作:删除信息——Delete

# -*- coding:utf-8 -*-
import pymysql

# 创建连接
conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, passwd=‘‘, db=‘test_python‘, charset=‘utf8‘)
# 创建游标
cursor = conn.cursor()
inp  = input(‘请输入更新后的信息:‘)
ret  = cursor.execute("update course set cname = %s where cname = ‘哇哈哈4‘", inp)
ret2 = cursor.execute("update course set cname = %s where cname = ‘哇哈哈1‘", inp)
# 提交,不然无法保存新建或者修改的数据
conn.commit()
print(‘不存在且更新结果:‘, ret, ‘\r\n存在且更新结果:‘, ret2)
# 关闭游标
cursor.close()
# 关闭连接
conn.close()

其他操作: 更改游标的返回值为字典

# -*- coding:utf-8 -*-
import pymysql

# 创建连接
conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, passwd=‘‘, db=‘test_python‘, charset=‘utf8‘)
# 创建游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute(‘select cid as id , cname as name from course‘)  # 可以更改原理字典的key[cname]为name
print(cursor.fetchall())  # 可以根据字典取值
# 关闭游标
cursor.close()
# 关闭连接
conn.close()

其他操作:获取自增ID

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql

conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, passwd=‘‘, db=‘test_python‘, charset=‘utf8‘)
cursor = conn.cursor()
cursor.executemany("insert into course(cname, teacher_id)values(%s,%s)", [("百事可乐", 1), ("可口可乐", 2)])
conn.commit()
# 获取最新自增ID
new_id = cursor.lastrowid
print(new_id)
cursor.close()
conn.close()

防SQL注入的方法

防SQL注入的方法:

1. 存储过程

2. 占位符拼接  切记用字符串拼接

SQL注入:更改了原来的sql语句,不推荐拼接,推荐参数传递

# -*- coding:utf-8 -*-
import pymysql

# 创建连接
conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, passwd=‘‘, db=‘test_python‘, charset=‘utf8‘)
# 创建游标
cursor = conn.cursor()
sql = ‘select * from course where cid = "%s" and cname = "%s"‘
# sql = sql % (‘24‘, ‘哇哈哈3‘)        # 正常
sql = sql % (‘24"-- ‘, ‘哇哈哈3‘)      # SQL注入取值,注释掉了后面的内容
# sql = sql % (‘24" or 1=1 -- ‘, ‘哇哈哈3‘)   # SQL注入取值,后面的条件恒成立,可查询所有结果
print(sql)
ret = cursor.execute(sql);
r = cursor.fetchall()
print(‘执行结果:‘, r)
# 关闭游标
cursor.close()
# 关闭连接
conn.close()

原文地址:https://www.cnblogs.com/ftl1012/p/9385377.html

时间: 2024-10-20 20:32:13

Mysql学习---Python操作Mysql 1231的相关文章

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

欢迎点击个人博客 http://www.iwangzheng.com/ 刚开始学python,所以很多代码都需要在ipython里尝试一下.今天记录的是最基本的操作mysql数据库. 写数据库连接操作的时候,仿佛回到了当年在前两家公司写asp.net的感觉. 1.首先在mysql数据库里新建个数据库 create database db_02 default charset utf8; create table user (id int auto_increment primary key,us

Python数据库操作 Python操作mysql#学习猿地

# python操作mysql mysql数据库可以应用于多种编程语言,包括 PHP,Java,Go,Python 不同编程语言操作mysql,都是使用了mysql提供的API接口. 如果直接操作mysql提供的API相对复杂一些,因为不同的编程语言都有不同的封装好的包或者模块进行数据库的相关操作. 在python中也有很多的包或模块进行mysql数据库的操作,比较知名的包包括 pymysql,mysqldb... ### 安装pymysql pip install pymysql ### py

Python学习之==>操作MySQL

一.简介: MySQL为关系型数据库,其他关系型数据库包括Oracle.DB2.Sql Server等等.Python操作MySQL需要使用到pymsyql模块,pip安装即可. 二.操作MySQL步骤 1.连上数据库(IP.端口号.用户名.密码.数据库名) 2.建立游标 3.执行sql 4.获取结果 5.关闭游标 6.关闭连接 1 import pymysql 2 conn = pymysql.connect( 3 host='192.168.1.112', 4 user='test', 5

Python操作Mysql基础教程

Python操作Mysql 最近在学习python,这种脚本语言毫无疑问的会跟数据库产生关联,因此这里介绍一下如何使用python操作mysql数据库.我python也是零基础学起,所以本篇博客针对的是python初学者,大牛可以选择绕道. 另外,本篇博客基于的环境是Ubuntu13.10,使用的python版本是2.7.5. MYSQL数据库 MYSQL是一个全球领先的开源数据库管理系统.它是一个支持多用户.多线程的数据库管理系统,与Apache.PHP.Linux共同组成LAMP平台,在we

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会

Python 操作 MySQL 的5种方式

不管你是做数据分析,还是网络爬虫,Web 开发.亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的5种方式,你可以在实际开发过程中根据实际情况合理选择. 1.MySQLdb MySQLdb又叫MySQL-python ,是 Python 连接 MySQL 最流行的一个驱动,很多框架都也是基于此库进行开发,遗憾的是它只支持 Python2.x,而且安装的时候有很多前置条件,因为它是基于C开发的库,在 Windows

python操作mysql ------- SqlAchemy正传

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

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!