当前位置: 首页 > news >正文

python---数据库操作

python的错误和异常

异常:

运行期检测到的错误被称为异常。

try语句按照如下方式工作:

首先,执行try子句(在关键字try和关键字except之间的语句)

如果没有异常发生,忽略except子句,try子句执行后结束。

如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。

如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。

一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。

处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。

一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组

except (RuntimeError, TypeError, NameError):pass

try语法:

try_stmt  ::=  try1_stmt | try2_stmt
try1_stmt ::=  "try" ":" suite("except" [expression ["as" identifier]] ":" suite)+["else" ":" suite]["finally" ":" suite]
try2_stmt ::=  "try" ":" suite"finally" ":" suite

try:print("这是上方的语句")num1 = 1 / 0num1 = 100 / 10# say_hello()print("这是下方的语句")
except (ZeroDivisionError, NameError) as e:print("你又拿0做除数了吧")#  打印异常信息print(e)
finally:print("好,该结束了")

python中的模块

__init__.py的作用:

1、识别文件夹作为可调用库

2、在库内文件被调用时默认执行其中的代码,配置模块的初始化操作。

有时候我们在做导入时会偷懒,将包中的所有内容导入

from mypackage import *

__all__ 关联了一个模块列表,当执行 from xx import * 时,就会导入列表中的模块。我们将 __init__.py 修改为:

__all__ = ['subpackage_1', 'subpackage_2']

则在导入模块的时候只会导入__all__中指定的模块。

python中的数据库操作

pymysql的使用

pymysql的文档地址:

Welcome to PyMySQL’s documentation! — PyMySQL 0.7.2 documentation

使用pip安装:pip install PyMySQL

mysql设置UTF-8编码:

[client]
port=3306
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8

重启mysqld服务器即可

创建数据库:

from pymysql import *# 建立到数据库的连接
conn = connect(host='localhost',user='root',password='123456')
# 获取游标
mycur = conn.cursor()
# 执行创建数据库的语句
rowNum = mycur.execute("create database pydb")print("受影响的行数:",rowNum)# 关闭游标
mycur.close()
# 关闭连接
conn.close()

创建数据库表:

from pymysql import *# 建立到数据库的连接
conn = connect(host='localhost',user='root',password='123456',database='pydb')
# 获取游标
mycur = conn.cursor()
# 执行创建数据库的语句
rowNum = mycur.execute("""
CREATE TABLE `tb_user` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`username` varchar(50) NOT NULL COMMENT '用户名',`password` varchar(32) NOT NULL COMMENT '密码,加密存储',`phone` varchar(20) DEFAULT NULL COMMENT '注册手机号',`email` varchar(50) DEFAULT NULL COMMENT '注册邮箱',`created` datetime NOT NULL,`updated` datetime NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `username` (`username`) USING BTREE,UNIQUE KEY `phone` (`phone`) USING BTREE,UNIQUE KEY `email` (`email`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8 COMMENT='用户表'
""")print("受影响的行数:", rowNum)# 关闭游标
mycur.close()
# 关闭连接
conn.close()

新增数据:

from pymysql import *# 建立到数据库的连接
conn = connect(host='localhost', user='root', password='123456', database='pydb')
# 获取游标
mycur = conn.cursor()
# 开启事务
conn.begin()
# 执行创建数据库的语句
rowNum = mycur.execute('''
INSERT INTO `tb_user` VALUES ('7', 'zhangsan', 'e10adc3949ba59abbe56e057f20f883e', '13488888888', 'aa@a', '2015-04-06 17:03:55', '2015-04-06 17:03:55');
''')print("受影响的行数:", rowNum)
# 提交事务
conn.commit()# 关闭游标
mycur.close()
# 关闭连接
conn.close()

或者:

from pymysql import *# 建立到数据库的连接
conn = connect(host='localhost', user='root', password='123456', database='pydb')
# 获取游标
mycur = conn.cursor()
# 开启事务
conn.begin()
# 执行创建数据库的语句
# 防止SQL注入,%s是占位符,不是python的
rowNum = mycur.execute('''
INSERT INTO `tb_user` VALUES (%s, %s, %s, %s, %s, %s, %s);
''', (36, 'test02', '202cb962ac59075b964b07152d234b70', '1370348890', None, '2015-08-01 12:28:39', '2015-08-01 12:28:39'))print("受影响的行数:", rowNum)
# 提交事务
conn.commit()# 关闭游标
mycur.close()
# 关闭连接
conn.close()

删除数据:

from pymysql import *# 建立到数据库的连接
conn = connect(host='localhost', user='root', password='123456', database='pydb')
# 获取游标
mycur = conn.cursor()
# 开启事务
conn.begin()
# 执行创建数据库的语句
# 防止SQL注入
rowNum = mycur.execute('delete from tb_user where id=%s', (36,))print("受影响的行数:", rowNum)
# 提交事务
conn.commit()# 关闭游标
mycur.close()
# 关闭连接
conn.close()

查询:

from pymysql import *# 建立到数据库的连接
conn = connect(host='localhost', user='root', password='123456', database='pydb')
# 获取游标
mycur = conn.cursor()
# 执行查询,返回受影响的行数
rowNum = mycur.execute("select * from tb_user")print("受影响的行数:", rowNum)
# 获取所有结果
results = mycur.fetchall()
# 遍历结果集
for result in results:print(result)
# 关闭游标
mycur.close()
# 关闭连接
conn.close()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Tensorflow中的张量操作
  • Spring依赖注入与控制反转
  • 设计模式-迭代器模式(Iterator)
  • xss 盲打
  • 大语言模型的关键技术
  • ElasticSearch优化
  • 光明源@智慧公厕的卫生安全与隐私平衡!
  • 无需公网IP!部署Apache服务器与内网穿透实现公网访问
  • Java中final用法
  • Linux - 基础IO(Linux 当中的文件,文件系统调用接口,文件描述符)- 上篇
  • Amazon EC2 Serial Console 现已在其他亚马逊云科技区域推出
  • 设计模式-解释器模式(Interpreter)
  • 前后端技术栈
  • Postman模拟上传文件
  • 城市内涝积水监测,万宾科技内涝预警监测系统
  • Codepen 每日精选(2018-3-25)
  • eclipse的离线汉化
  • ERLANG 网工修炼笔记 ---- UDP
  • JavaScript学习总结——原型
  • js写一个简单的选项卡
  • Linux链接文件
  • mac修复ab及siege安装
  • spring boot下thymeleaf全局静态变量配置
  • 测试如何在敏捷团队中工作?
  • 从输入URL到页面加载发生了什么
  • 关于 Cirru Editor 存储格式
  • 警报:线上事故之CountDownLatch的威力
  • 微信小程序实战练习(仿五洲到家微信版)
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ![CDATA[ ]] 是什么东东
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (2.2w字)前端单元测试之Jest详解篇
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (TOJ2804)Even? Odd?
  • (二十三)Flask之高频面试点
  • (分类)KNN算法- 参数调优
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (七)glDrawArry绘制
  • (实战篇)如何缓存数据
  • (算法)硬币问题
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • .net MySql
  • .net 调用php,php 调用.net com组件 --
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [ 数据结构 - C++]红黑树RBTree
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [<MySQL优化总结>]
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)