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实现的简单猜数字游戏
Apr 04 Python
Python字符串替换实例分析
May 11 Python
实例讲解Python中SocketServer模块处理网络请求的用法
Jun 28 Python
Python 装饰器深入理解
Mar 16 Python
python logging重复记录日志问题的解决方法
Jul 12 Python
windows下python安装小白入门教程
Sep 18 Python
3分钟学会一个Python小技巧
Nov 23 Python
Python函数返回不定数量的值方法
Jan 22 Python
python 爬取学信网登录页面的例子
Aug 13 Python
基于python使用tibco ems代码实例
Dec 20 Python
Python爬虫实现模拟点击动态页面
Mar 05 Python
Python操作word文档插入图片和表格的实例演示
Oct 25 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/09/23 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
理解JavaScript的prototype属性
2012/02/11 Javascript
jQuery随机切换图片的小例子
2013/04/18 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
深入理解Python中变量赋值的问题
2017/01/12 Python
Python 实现链表实例代码
2017/04/07 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
Python绘制的二项分布概率图示例
2018/08/22 Python
python模块导入的细节详解
2018/12/10 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
python Tensor和Array对比分析
2020/01/08 Python
Pytorch之finetune使用详解
2020/01/18 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
顶岗实习计划书
2014/01/10 职场文书
党员违纪检讨书
2014/02/18 职场文书
yy婚礼主持词
2014/03/14 职场文书
应聘教师求职信范文
2015/03/20 职场文书
在职证明范本
2015/06/15 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers