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 06 Python
Python将xml和xsl转换为html的方法
Mar 10 Python
python中sys.argv参数用法实例分析
May 20 Python
详解Django通用视图中的函数包装
Jul 21 Python
利用Python爬虫给孩子起个好名字
Feb 14 Python
Python守护线程用法实例
Jun 23 Python
django 创建过滤器的实例详解
Aug 14 Python
python numpy格式化打印的实例
May 14 Python
Django配置celery(非djcelery)执行异步任务和定时任务
Jul 16 Python
python交互模式下输入换行/输入多行命令的方法
Jul 02 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
python+pyhyper实现识别图片中的车牌号思路详解
Dec 24 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
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
深入解析PHP内存管理之谁动了我的内存
2013/06/20 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
实现PHP搜索加分页
2016/10/12 PHP
js 函数调用模式小结
2011/12/26 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
浅谈react前后端同构渲染
2017/09/20 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
在Python中使用SimpleParse模块进行解析的教程
2015/04/11 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
工程专业求职自荐书范文
2014/02/18 职场文书
合伙协议书范本
2014/04/21 职场文书
小学教师读书活动总结
2014/07/08 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
调研汇报材料范文
2014/08/17 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
爱心捐款活动总结
2015/05/09 职场文书
图书馆义工感想
2015/08/07 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python