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 22 Python
python通过socket查询whois的方法
Jul 18 Python
Python 3.x 连接数据库示例(pymysql 方式)
Jan 19 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
python线程安全及多进程多线程实现方法详解
Sep 27 Python
python安装本地whl的实例步骤
Oct 12 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
Python操作Jira库常用方法解析
Apr 10 Python
基于Python实现粒子滤波效果
Dec 01 Python
python爬虫基础之urllib的使用
Dec 31 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
Apr 12 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/13 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
php实现文件编码批量转换
2014/03/10 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
Laravel自动生成UUID,从建表到使用详解
2019/10/24 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
基于jquery的给文章加入关键字链接
2010/10/26 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
js中设置元素class的三种方法小结
2011/08/28 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
jquery解析xml字符串示例分享
2014/03/25 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
NodeJs的优势和适合开发的程序
2016/08/14 NodeJs
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
JS中数组重排序方法
2016/11/11 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
Vue.js学习教程之列表渲染详解
2017/05/17 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
Mac 上切换Python多版本
2017/06/17 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
Python3+Appium安装使用教程
2019/07/05 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
eBay奥地利站:eBay.at
2019/07/24 全球购物
自我评价优秀范文分享
2013/11/30 职场文书
大专生的学习自我评价
2013/12/04 职场文书
销售员个人求职的自我评价
2014/02/10 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
介绍信范文
2015/01/31 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书