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 pdb调试方法分享
Jan 21 Python
Python基础之函数用法实例详解
Sep 10 Python
Python实现字符串与数组相互转换功能示例
Sep 22 Python
Python编程求质数实例代码
Jan 31 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
对pandas处理json数据的方法详解
Feb 08 Python
利用selenium爬虫抓取数据的基础教程
Jun 10 Python
在django admin中添加自定义视图的例子
Jul 26 Python
大家都说好用的Python命令行库click的使用
Nov 07 Python
Python实现直播推流效果
Nov 26 Python
Pycharm和Idea支持的vim插件的方法
Feb 21 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
Apr 07 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使用socket post数据到其它web服务器的方法
2015/06/02 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
浅谈PHP封装CURL
2019/03/06 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
浅析Jquery操作select
2016/12/13 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
Python扩展内置类型详解
2018/03/26 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
师范生实习自我鉴定
2013/11/01 职场文书
业务员岗位职责范本
2015/04/03 职场文书
专职安全员岗位职责
2015/04/11 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers