Python中的MySQL数据库编程
1.刚开始我们先给一张图片,是介绍Python操作MySQl详细步骤。
2.在Python语言中要想操作数据库,就需要使用的pymysql这个模块。
from pymysql import connect
3.获取connection连接对象
要和MySQL数据库连接,需要调用pymysql模块中的connect()方法,其中也包括一些参数解释。
conn=connect(参数列表)
- 参数host:连接的mysql主机,如果本机是’localhost’
- 参数port:连接的mysql主机的端口,默认是3306
- 参数database:数据库的名称
- 参数user:连接的用户名
- 参数password:连接的密码
- 参数charset:通信采用的编码方式,推荐使用utf8
4. 常用的方法有以下:
- 关闭数据库连接 conn.close()
- 提交数据 conn.commit()
- 撤销回滚数据 conn.rollback()
- 获取游标 cur = conn.cursor()
5.Cursor游标对象
5.1获取Cursor对象
调用Connection对象的cursor()方法
cur =conn.cursor()
目的: 执行sql语句(使用频度最高的语句为select、insert、update、delete)
5.2 使用游标执行SQL语句
execute(operation [, parameters ])
执行SQL语句,返回受影响的行数,主要用于执行insert、update、delete语句,也可以执行create、alter、drop等语句
5.3 关闭游标
cur.close()
5.4 获取结果集中的一条
cur.fetchone()
返回一个元组
5.5 获取结果集中的所有
cur.fetchall()
执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回
6.pymysql完成数据查询
import pymysqlconn = pymysql.connect(host='localhost', port=3306, user='root',password='mysql',database='python_test_1', charset='utf8')
# 获取游标
cursor = conn.cursor()# 执行SQL语句 返回值就是SQL语句在执行过程中影响的行数
sql = "select * from hero;"row_count = cursor.execute(sql)
print("SQL语句执行影响的行数%d" % row_count)# 取出结果集中一行 返回的结果是一行
print(cursor.fetchone())# 取出结果集中的所有数据 返回一行数据
for line in cursor.fetchall():print(line)
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
7.pymysql完成对数据库的增删改
import pymysqlconn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='mysql',db='python_test_1', charset='utf8')
# 通过连接获取游标
cursor = conn.cursor()
# sql = "delete from hero where id = 5;"
# sql = insert into hero (name) values ('黎明');
sql = "update hero set kongfuid=444 where id = 4;"row_count = cursor.execute(sql)
print("SQL语句执行影响的行数%d" % row_count)
# 提交数据到数据库
conn.commit()# 回滚数据到什么都不做的状态 即撤销刚刚的修改
# conn.rollback()# 关闭游标和连接
cursor.close()
conn.close()
8.参数化列表防止SQL注入
SQL注入 产生原因: 后台将用户提交的带有恶意的数据和SQL进行字符串方式的拼接,从而影响了SQL语句的语义,最终产生数据泄露的现象。
如果防止: sql语句的参数化, 将SQL语句的所有数据参数存在一个列表中传递给execute函数的第二个参数
from pymysql import connectdef main():find_name = input("请输入物品名称:")# 创建Connection连接conn = connect(host='localhost',port=3306,user='root',password='mysql',database='goods',charset='utf8')# 获得Cursor对象cs1 = conn.cursor()# 非安全的方式# 输入 " or 1=1 or " (双引号也要输入)# sql = 'select * from goods where name="%s"' % find_name# print("""sql===>%s<====""" % sql)# # 执行select语句,并返回受影响的行数:查询所有数据# count = cs1.execute(sql)# 安全的方式# 构造参数列表params = [find_name]# 执行select语句,并返回受影响的行数:查询所有数据count = cs1.execute('select * from goods where name=%s', params)# 注意:# 如果要是有多个参数,需要进行参数化# 那么params = [数值1, 数值2....],此时sql语句中有多个%s即可# 打印受影响的行数print(count)# 获取查询的结果# result = cs1.fetchone()result = cs1.fetchall()# 打印查询的结果print(result)# 关闭Cursor对象cs1.close()# 关闭Connection对象conn.close()if __name__ == '__main__':main()
Python中的MySQL数据库编程相关推荐
- 在python中配置MySQL数据库
MySQL数据库(1) 尽管用文件形式将数据保存到磁盘,已经是一种不错的方式.但是,人们还是发明了更具有格式化特点,并且写入和读取更快速便捷的东西--数据库(如果阅读港台的资料,它们称之为" ...
- python中的mysql数据库like模糊查询
近期工作在使用python语言开发项目,工作中遇到了一个python连接mysql的like查询. 因为%在python中三个特殊的符号,如%s.%d分别代表了字符串占位符和数字占位符. 大家知道.m ...
- python中操作mysql数据库CRUD(增、删、改、查)
一.插入操作 #coding:utf8 import pymysql.cursors #连接数据库 conn=pymysql.Connect(user="root",passwor ...
- python与mysql数据库如何连接_如何连接Python中的MySQL数据库?
白衣染霜花 用Python 2分三步连接到MySQL1-设定在执行任何操作之前,必须安装MySQL驱动程序.与PHP不同,Python默认只安装SQLite驱动程序.这样做的最常用的包是MySQLdb ...
- python如何删除mysql数据库_python删除数据mysql数据库连接
Python学习之旅:访问MySQL数据库 Python学习之旅:访问MySQL数据库 MySQL是Web世界中使用最广泛的数据库服务器.为服务器端设计的数据库,能承受高并发访问. python如何使 ...
- 本地Python连接服务器中的Mysql数据库
1.Python中安装mysql驱动 1.1.Python下安装mysql驱动: pip installmysql-connector-python --allow-external mysql-co ...
- python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...
本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...
- python django mysql结果获取_Django中从mysql数据库中获取数据传到echarts方式
尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...
- python echarts mysql python_Django中从mysql数据库中获取数据传到echarts方式
尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...
最新文章
- 剑指Offer——平衡二叉树
- jQuery之validate验证表单
- 可视化工具第一篇(百度Echarts)
- VVC专利池最新进展:MC-IF正在召集专利拥有者
- matlab二元一次方程求解_2-函数的求解计算
- const int *p与int *const p的区别
- 2020年5月十大热门报告盘点(附下载链接)
- Adaboost算法的学习笔记~
- Springboot,log文件配置时,logging.file.name与logging.file
- 数字图像处理实验之Matlab对图像的基本处理
- 应广单片机 c语言,应广单片机 MINI-C编程指南.pdf
- 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)...
- 如何将平板电脑/手机作为电脑的扩展屏(附带软件下载)
- wannier插值能带拟合5
- C/S结构是什么意思?有什么优点?
- 某直播APP逆向TCP协议分析
- 开机提示小娜无法在本计算机运行,win10系统下小娜无法打开应用如何解决
- [NLP] 实例讲解 N-gram语言模型 中 Good-Turning 平滑技术
- ibm tivoli_使用表单认证通过Tivoli Access Manager电子商务WebSEAL启用Microsoft Office Sharepoint Server客户机集成
- RT-Thread学习笔记五——临界区与临界区保护
热门文章
- Oracle之表分区、分区索引(一)
- mysql_safe后重启_mysql无限重启是什么情况
- redis(19)--事务
- Semaphore应用及原理
- 获取二进制或者16/32位的某一位的值
- 缘起 Dubbo ,讲讲 Spring XML Schema 扩展机制
- Linux运维工程师面试题第三套
- 表现层(jsp)、持久层(类似dao)、业务层(逻辑层、service层)、模型(javabean)、控制层(action)...
- stm32程序中的assert_param()的说明
- HDU - 5008 Boring String Problem(后缀树求本质不同第k大子串)