python程序中使用MySQL数据库
python程序中使用MySQL数据库
1、python中使用MySQL数据库需要借助第三方模块 pymysql(pip install pymysql)
2、pymysql本质是一个套接字客户端软件,在python 程序中使用pymysql对象链接服务器端
1 pymysql连接数据库
#方式1:
import pymysql
#step1 链接
conn = pymysql.connect(
host="localhost",
user="root",
password="123",
db="myschool",
charset="utf8")
cursor = conn.cursor() #step2 拿游标
sql = "select * from class;" #step3 拼接sql语句
res1 = cursor.execute(sql) #step4 调用execute()执行sql语句
print(res1) #res不是查询的数据结果,而是查到数据的行数
#step5 得到查询数据
res2 = cursor.fetchone() #fetchone返回查到第一行数据,以元组的形式返回
res3 = cursor.fetchmany(2) #fetchmany(n) 返回查到的接着n条记录
res4 = cursor.fetchall() #fetchall() 返回剩下所有的数据记录
cursor.close() #step6 #关闭游标
conn.close() #step7 #关闭客户端链接
1、方式1清楚地列出了使用pymysql连接数据库的主要步骤
2、当使用查询操作时,查询的数据需要使用 fetchone()等函数获得,返回元组形式的结果
3、使用增、删、改操作时,涉及到拼接sql语句时的字符串引号问题,需要注意sql注入问题
4、此外,还有第二种连接方式,用字典进行连接参数的管理,这样子更优雅
#方式2:
import pymysql.cursors
config = {
'host': '127.0.0.1',
'port': 3306,
'user': 'root',
'password': 'root',
'db': 'myschool',
'charset': 'utf8' }
conn = pymysql.connect(**config) #step1 创建连接
#cursor = conn.cursor() #step2 创建游标方式1
with conn.cursor() as cursor: #创建游标方法2 不需要再手动关闭游标
sql = "select * from class;" #step3 拼接sql语句
cursor.execute(sql) #step4 执行sql语句
res = cursor.fetchall() #step5 得到查询数据
print(res)
conn.close() #step6 关闭连接,释放内存
2 sql 注入
sql注入现象见:https://www.cnblogs.com/linhaifeng/articles/7525619.html#_label3
1、通过前端的表单提交的数据中携带sql语句, 欺骗服务器, 在后端对数据进行存储时, 执行恶意的sql语句
2、比如在使用pymysql操作数据库是使用字符串拼接生产sql语句, 就会出现sql注入漏洞
3、使用pymysql时, 不要自己拼接字符串, 而是使用execute方法, pymysql模块已经对提交的数据做了处理, 不会出
现sql注入
3 增删改查操作
1、查主要使用的是execute()和fetchone()系列函数
2、增删改主要使用的是execute()和commit()函数
#示例1:查
import pymysql
conn = pymysql.connect(host="localhost",user="root",password="123",
db="myschool",charset="utf8")
cursor = conn.cursor()
sql = "select * from student;"
res = cursor.execute(sql)
data = cursor.fetchall() #fetchone()\fetchmany(size)
print(data)
cursor.close()
conn.close()
3、需要注意的一点是,不要自己拼接sql语句的字符串、使用在execute中传参的方式
#示例2:增
import pymysql
conn = pymysql.connect(host="localhost",user="root",password="123",
db="myschool",charset="utf8")
cursor = conn.cursor()
#方式1
sql = "insert into student(sname,cid) values("tom",2);"
res = cursor.execute(sql,)
print(res) #打印sql影响成功的行数
conn.commit() #提交后才发现表中插入记录成功
#方式2
sql = "insert into student(sname,cid) values(%s,%d);"
res = cursor.execute(sql,("tom",2)) #参数放在元祖中
print(res)
conn.commit() #提交后才发现表中插入记录成功
#方式3
sql='insert into student(sname,cid) values(%s,%d);'
res=cursor.executemany(sql,[("jack",3),("lili",4)]) #插入多行,列表
print(res)
conn.commit() #提交后才发现表中插入记录成功
cursor.close()
conn.close()
#删、改的操作类似
4 pymysql使用总结
1、pymysql.connect()参数说明
host(str) #MySQL服务器地址
port(int) #MySQL服务器端口,默认3306
user(str) #用户名
password(str) #密码
db(str) #数据库名
charset(str) #连接编码
2、connection对象支持的方法
cursor() #获得游标
commit() #提交当前事务
rollback() #回滚当前事务
close() #关闭连接
3、cursor对象支持的方法
execute() #执行一个sql语句
fetchone() #获取结果集中的一条记录
fetchmany(size) #获取结果集中的多条记录,size指定条数
fetchall() #获取结果集中的所有剩下所有条
rowcount() #返回数据条数或影响行数
rownumber #返回数据条数或影响行数
close() #关闭游标对象
python程序中使用MySQL数据库的更多相关文章
- python项目中对mysql数据库进行配置,并进行连接测试
在settings.py中配置mysql数据库进行相关配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME ...
- Java程序中实现 MySQL数据库的备份与还原
案例代码: 数据库备份 //mysqldump -h端口号 -u用户 -p密码 数据库 > d:/test.sql --备份D盘 //备份 public static void dataBase ...
- shell中读写mysql数据库
本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...
- Django中使用mysql数据库并使用原生sql语句操作
Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件mysql数据库,版本5.7 ...
- Windows10系统的Linux子系统中安装MySQL数据库心得
后端开发童鞋们, 自己开发机用的是Windows系统电脑(台式机或笔记本), 而开发的程序和使用的数据库等要运行在Linux服务器上, 这种情况有木有? 提前声明: 本文并不讨论操作系统的比较, 以及 ...
- 【Python】Windows平台下Python、Pydev连接Mysql数据库
Mysql数据库是跨平台的,不是说Python一定就要连接Mongodb. Python连接Mysql数据库是非常easy的. 首先,你要配置好Python的开发环境,详见<[Python]Wi ...
- 【mysql】备份篇2:使用java程序定期备份mysql数据库
承接备份篇1, 在备份篇1中,使用dat文件加+系统计划任务程序完成mysql定期备份任务 在这一篇,备份使用java程序定期备份mysql数据库. 下面代码和程序思想给出: package com. ...
- 在 Android 应用程序中使用 SQLite 数据库以及怎么用
part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开 ...
- django 中连接mysql数据库的操作步骤
django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mys ...
随机推荐
- Apache Tomcat 绿色版安装Service(服务)
1.配置CATALINA_HOME的环境变量: 变量名:CATALINA_HOME 值:tomcat安装或解压的根目录如:c:\Apache tomcat6.0 2.开始->运行->c ...
- python课堂整理13---函数的作用域及匿名函数
name = 'alex' def foo(): name = 'jinling' def bar(): print(name) return bar a = foo() print(a) 阅读上述代 ...
- JAVA-1.连接数据库
import java.sql.*; import com.mysql.jdbc.Driver; /* * <JDBC基础篇> * 连接数据库一般来说分为6个步骤: *1-加载驱动 *2- ...
- django第三次(转自刘江)
所有的模型字段都可以接收一定数量的参数,比如CharField至少需要一个max_length参数.下面的这些参数是所有字段都可以使用的,并且是可选的. null 该值为True时,Django在数据 ...
- 第三章 基础算法和数据结构高频题 I
区间类问题 1 Missing Interval public List<String> findMissingRanges(int[] nums, int lower, int uppe ...
- TCP传输协议如何进行拥塞控制?
拥塞控制 拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象.这种现象跟公路网中 ...
- PHP后门***详解
说起php后门***我就心有愉季啊前不久一个站就因不小心给人注入了然后写入了小***这样结果大家知道的我就不说了下面我来给大家收集了各种php后门***做法大家可参考. php后门***对大家来说一点 ...
- 【React踩坑记三】React项目报错Can't perform a React state update on an unmounted component
意思为:我们不能在组件销毁后设置state,防止出现内存泄漏的情况 分析出现问题的原因: 我这里在组件加载完成的钩子函数里调用了一个EventBus的异步方法,如果监听到异步方法,则会更新state中 ...
- Go中的指针
学Java以来,让程序员忽略了指针和内存地址这些概念,Java帮我们封装了对象,简化了对象引用之间的关系.在Go语言中,又帮我们回忆起这些概念. 我们创建的每一个对象在内存中都有一个位置去存储,每个内 ...
- kafka消息的处理机制(五)
这一篇我们不在是探讨kafka的使用,前面几篇基本讲解了工作中的使用方式,基本api的使用还需要更深入的去钻研,多使用才会有提高.今天主要是探讨一下kafka的消息复制以及消息处理机制. 1. bro ...