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数据库编程相关推荐

  1. 在python中配置MySQL数据库

    MySQL数据库(1) 尽管用文件形式将数据保存到磁盘,已经是一种不错的方式.但是,人们还是发明了更具有格式化特点,并且写入和读取更快速便捷的东西--数据库(如果阅读港台的资料,它们称之为" ...

  2. python中的mysql数据库like模糊查询

    近期工作在使用python语言开发项目,工作中遇到了一个python连接mysql的like查询. 因为%在python中三个特殊的符号,如%s.%d分别代表了字符串占位符和数字占位符. 大家知道.m ...

  3. python中操作mysql数据库CRUD(增、删、改、查)

    一.插入操作 #coding:utf8 import pymysql.cursors #连接数据库 conn=pymysql.Connect(user="root",passwor ...

  4. python与mysql数据库如何连接_如何连接Python中的MySQL数据库?

    白衣染霜花 用Python 2分三步连接到MySQL1-设定在执行任何操作之前,必须安装MySQL驱动程序.与PHP不同,Python默认只安装SQLite驱动程序.这样做的最常用的包是MySQLdb ...

  5. python如何删除mysql数据库_python删除数据mysql数据库连接

    Python学习之旅:访问MySQL数据库 Python学习之旅:访问MySQL数据库 MySQL是Web世界中使用最广泛的数据库服务器.为服务器端设计的数据库,能承受高并发访问. python如何使 ...

  6. 本地Python连接服务器中的Mysql数据库

    1.Python中安装mysql驱动 1.1.Python下安装mysql驱动: pip installmysql-connector-python --allow-external mysql-co ...

  7. python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...

    本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...

  8. python django mysql结果获取_Django中从mysql数据库中获取数据传到echarts方式

    尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...

  9. python echarts mysql python_Django中从mysql数据库中获取数据传到echarts方式

    尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...

最新文章

  1. 剑指Offer——平衡二叉树
  2. jQuery之validate验证表单
  3. 可视化工具第一篇(百度Echarts)
  4. VVC专利池最新进展:MC-IF正在召集专利拥有者
  5. matlab二元一次方程求解_2-函数的求解计算
  6. const int *p与int *const p的区别
  7. 2020年5月十大热门报告盘点(附下载链接)
  8. Adaboost算法的学习笔记~
  9. Springboot,log文件配置时,logging.file.name与logging.file
  10. 数字图像处理实验之Matlab对图像的基本处理
  11. 应广单片机 c语言,应广单片机 MINI-C编程指南.pdf
  12. 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)...
  13. 如何将平板电脑/手机作为电脑的扩展屏(附带软件下载)
  14. wannier插值能带拟合5
  15. C/S结构是什么意思?有什么优点?
  16. 某直播APP逆向TCP协议分析
  17. 开机提示小娜无法在本计算机运行,win10系统下小娜无法打开应用如何解决
  18. [NLP] 实例讲解 N-gram语言模型 中 Good-Turning 平滑技术
  19. ibm tivoli_使用表单认证通过Tivoli Access Manager电子商务WebSEAL启用Microsoft Office Sharepoint Server客户机集成
  20. RT-Thread学习笔记五——临界区与临界区保护

热门文章

  1. Oracle之表分区、分区索引(一)
  2. mysql_safe后重启_mysql无限重启是什么情况
  3. redis(19)--事务
  4. Semaphore应用及原理
  5. 获取二进制或者16/32位的某一位的值
  6. 缘起 Dubbo ,讲讲 Spring XML Schema 扩展机制
  7. Linux运维工程师面试题第三套
  8. 表现层(jsp)、持久层(类似dao)、业务层(逻辑层、service层)、模型(javabean)、控制层(action)...
  9. stm32程序中的assert_param()的说明
  10. HDU - 5008 Boring String Problem(后缀树求本质不同第k大子串)