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目录与文件名操作例子
Aug 28 Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
python版本的仿windows计划任务工具
Apr 30 Python
Django rest framework工具包简单用法示例
Jul 20 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
python读取与处理netcdf数据方式
Feb 14 Python
基于Python数据结构之递归与回溯搜索
Feb 26 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
May 08 Python
Django自关联实现多级联动查询实例
May 19 Python
python解包用法详解
Feb 17 Python
python使用matplotlib绘制图片时x轴的刻度处理
Aug 30 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
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
PHP排序算法类实例
2015/06/17 PHP
php源码分析之DZX1.5加密解密函数authcode用法
2015/06/17 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
2017/08/03 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
js正则相关知识点专题
2018/05/10 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
python psutil库安装教程
2018/03/19 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
Django Form常用功能及代码示例
2020/10/13 Python
sort命令的作用和用法
2012/11/04 面试题
《学会待客》教学反思
2014/02/22 职场文书
网络信息安全承诺书
2014/03/26 职场文书
母校寄语大全
2014/04/10 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
民事申诉状范本
2015/05/20 职场文书
学术研讨会主持词
2015/07/04 职场文书
五年级数学教学反思
2016/02/16 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书