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使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
Python实现模拟登录及表单提交的方法
Jul 25 Python
python实现给数组按片赋值的方法
Jul 28 Python
Android应用开发中Action bar编写的入门教程
Feb 26 Python
Python随机生成带特殊字符的密码
Mar 02 Python
Python 实现一个颜色色值转换的小工具
Dec 06 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
Feb 13 Python
python3人脸识别的两种方法
Apr 25 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
Dec 30 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
Python 测试框架unittest和pytest的优劣
Sep 26 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的字符串用法小结
2010/06/08 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
JavaScript知识点整理
2015/12/09 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
js微信分享实现代码
2020/10/11 Javascript
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
python常用函数详解
2016/09/13 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
信息部岗位职责
2013/11/12 职场文书
生物专业个人自荐信范文
2013/11/29 职场文书
努力学习演讲稿
2014/05/10 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
小学感恩节活动总结
2015/03/24 职场文书
2015年服务员工作总结
2015/04/08 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android
python创建字典及相关管理操作
2022/04/13 Python
css3 选择器
2022/05/11 HTML / CSS