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字符串转换成浮点数函数分享
Jul 24 Python
Phantomjs抓取渲染JS后的网页(Python代码)
May 13 Python
Python模块结构与布局操作方法实例分析
Jul 24 Python
Python获取二维矩阵每列最大值的方法
Apr 03 Python
实例详解Matlab 与 Python 的区别
Apr 26 Python
Python 实现还原已撤回的微信消息
Jun 18 Python
python使用opencv对图像mask处理的方法
Jul 05 Python
pytorch常见的Tensor类型详解
Jan 15 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
设置jupyter中DataFrame的显示限制方式
Apr 12 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 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 include,include_once,require,require_once
2008/09/05 PHP
php中根据某年第几天计算出日期年月日的代码
2011/02/24 PHP
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
Javascript倒计时代码
2010/08/12 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
jquery 给动态生成的标签绑定事件的几种方法总结
2018/02/24 jQuery
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
python实现查询苹果手机维修进度
2015/03/16 Python
Python算术运算符实例详解
2017/05/31 Python
django使用html模板减少代码代码解析
2017/12/12 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
对Python实现累加函数的方法详解
2019/01/23 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
《我要的是葫芦》教学反思
2014/02/23 职场文书
初三学生个人自我评定
2014/04/06 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
总经理助理岗位职责范本
2014/07/20 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
大学生助学金感谢信
2015/01/21 职场文书
Python中glob库实现文件名的匹配
2021/06/18 Python