Python操作MySQL数据库的示例代码


Posted in Python onJuly 13, 2020

1. MySQL Connector

1.1 创建连接

import mysql.connector
 config={
   "host":"localhost","port":"3306",
   "user":"root","password":"password",
   "database":"demo"
 }
 con=mysql.connector.connect(**config)
 import mysql.connector
 config={
   "host":"localhost","port":"3306",
   "user":"root","password":"password",
   "database":"demo"
 }
 con=mysql.connector.connect(**config)

1.2 Cursor

import mysql.connector
 con=mysql.connector.connect(
   host="localhost",port="3306",
   user="root",password="password",
   database="demo"
 )
 cursor=con.cursor()
 sql="SELECT empno,job,sal FROM t_bonus;"
 cursor.execute(sql)
 print(type(cursor))
 for i in cursor:
   print(i)
 con.close()
 
 Result:
   <class 'mysql.connector.cursor_cext.CMySQLCursor'>
   (7369, 'CLERK', Decimal('8000.00'))
   (7499, 'SALESMAN', Decimal('1600.00'))
   (7521, 'SALESMAN', Decimal('1250.00'))
   (7566, 'MANAGER', Decimal('2975.00'))
   (7654, 'SALESMAN', Decimal('1250.00'))
   (7698, 'MANAGER', Decimal('2850.00'))
   (7782, 'MANAGER', Decimal('2450.00'))
   (7788, 'ANALYST', Decimal('3000.00'))
   (7839, 'PRESIDENT', Decimal('5000.00'))
   (7844, 'SALESMAN', Decimal('1500.00'))
   (7900, 'CLERK', Decimal('950.00'))
   (7902, 'ANALYST', Decimal('3000.00'))
   (7934, 'CLERK', Decimal('1300.00'))

1.3 SQL注入攻击

  1. username=1 OR 1=1 password=1 OR 1=1
  2. 在使用字符串直接拼接时OR之前不管对错,与OR结合都为true
  3. 解决方法——预编译(也可以提高速度)

1.4 事务管理和异常处理

sql连接和使用异常处理异常

import mysql.connector
 try:
   con=mysql.connector.connect(
     host="localhost",port="3306",
     user="root",password="password",
     database="demo"
   )
   con.start_transaction()
   cursor=con.cursor()
   sql="INSERT INTO t_dept(deptno,dname,loc) VALUES(%s,%s,%s);"
   cursor.execute(sql,(60,"SALES","HUBAI"))
   con.commit()
 except Exception as e:
   if "con" in dir():
     con.rollback()
   print(e)
 finally:
   if "con" in dir():
     con.close()

1.5 删除数据

import mysql.connector,mysql.connector.pooling
 config={
   "host": "localhost", "port": "3306",
   "user": "root", "password": "password",
   "database": "demo"
 }
 try:
   pool=mysql.connector.pooling.MySQLConnectionPool(**config,pool_size=5)
   con=pool.get_connection()
   con.start_transaction()
   cursor = con.cursor()
   sql = "DELETE FROM t_dept WHERE deptno=%s"
   cursor.execute(sql, (70,))
   con.commit()
 except Exception as e:
   if "con" in dir():
     con.rollback()
   print(e)
 # do not need to close con

executemany() 反复执行一条SQL语句

import mysql.connector,mysql.connector.pooling
 config={
   "host": "localhost", "port": "3306",
   "user": "root", "password": "password",
   "database": "demo"
 }
 try:
   pool=mysql.connector.pooling.MySQLConnectionPool(**config,pool_size=5)
   con=pool.get_connection()
   con.start_transaction()
   cursor = con.cursor()
   sql = "INSERT INTO t_dept(deptno,dname,loc) VALUES(%s,%s,%s);"
   date=[[70,"SALES","BEIJING"],[80,"ACTOR","SHANGHAI"]]
   cursor.executemany(sql, date)
   con.commit()
 except Exception as e:
   if "con" in dir():
     con.rollback()
   print(e)
 # do not need to close con

2. 数据库连接池

  1. 数据库的连接是昂贵的,一个连接要经过TCP三次握手,四次挥手,而且一台计算机的最大线程数也是有限的
  2. 数据库连接池技术就是先创建好连接,再直接拿出来使用
import mysql.connector,mysql.connector.pooling
 config={
   "host": "localhost", "port": "3306",
   "user": "root", "password": "password",
   "database": "demo"
 }
 try:
   pool=mysql.connector.pooling.MySQLConnectionPool(**config,pool_size=5)
   con=pool.get_connection()
   con.start_transaction()
   cursor = con.cursor()
   sql = "INSERT INTO t_dept(deptno,dname,loc) VALUES(%s,%s,%s);"
   cursor.execute(sql, (70, "SALES", "HUBAI"))
   con.commit()
 except Exception as e:
   if "con" in dir():
     con.rollback()
   print(e)
 # do not need to close con

以上就是Python操作MySQL数据库的示例代码的详细内容,更多关于Python操作MySQL数据库的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python基础教程之元组操作使用详解
Mar 25 Python
win7 下搭建sublime的python开发环境的配置方法
Jun 18 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
Apr 18 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
python和c语言的主要区别总结
Jul 07 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
python3 写一个WAV音频文件播放器的代码
Sep 27 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
OpenCV-Python模板匹配人眼的实例
Jun 08 Python
python中的class_static的@classmethod的巧妙用法
Jun 22 Python
Python基于正则表达式实现计算器功能
Jul 13 #Python
python输出结果刷新及进度条的实现操作
Jul 13 #Python
python实现图像外边界跟踪操作
Jul 13 #Python
Python实现打包成库供别的模块调用
Jul 13 #Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 #Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 #Python
Python使用pyexecjs代码案例解析
Jul 13 #Python
You might like
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
php批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
layer弹出层扩展主题的方法
2019/09/11 Javascript
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
Python3.6简单操作Mysql数据库
2017/09/12 Python
提升Python程序性能的7个习惯
2019/04/14 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
如何让python的运行速度得到提升
2020/07/08 Python
python ssh 执行shell命令的示例
2020/09/29 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
日本热销NO.1胶原蛋白冻:Aishitoto爱希特多
2019/06/20 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
如何整合JQuery和Prototype
2014/01/31 面试题
金融行业职业生涯规划范文
2014/01/17 职场文书
实习公司领导推荐函
2014/05/21 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
外出考察学习心得体会
2016/01/18 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python