Python Web 开发基础知识(2)

174 阅读4分钟

本篇主要简单介绍MySQL和Web框架

使用Python操作MySQL

MYSQL的下载安装

可以参考【2千多字】详解最新版MySQL 8.0的安装过程和Workbench、MySQL命令行的配置使用 - 掘金 (juejin.cn)这篇文章说明很详细,比课堂上老师说的好一点。MySQL的语法可以参考MySQL语法大全 - 掘金 (juejin.cn)内容还是很详细滴。

下载PyMySQL

MYSQL服务器已独立的进程运行,通过网络对外服务,咱们需要下载支持Python的MySQL驱动器来连接到服务器。在python中有很多,咱们就拿最简单的pymysql来学习。 下载的话可以使用pip 或者 conda

链接对象

import pymysql

try:
   connect = pymysql.connect(
      host = "localhost",
      user = "root",
      password = "761943",
      db = "studentdb",
      charset = "utf8",
      cursorclass = pymysql.cursors.DictCursor    #游标类型
   )
   print(connect)
except Exception as e:
   print(e)
connect.close()

方法:

1,cursor() 获取游标对象来执行DML操作,调用存储过程

2,commit() 提交事务

3,rollback() 回滚事物

4,close() 关闭数据库连接

游标对象

Python通过连接对象的cursor方法获取游标对象 cursor = connect.sursor()

游标对象常用方法

execute() // 执行数据库操作,SQL语句或者数据库命令 excutemany() //批量操作 fetchone() //获取查询结果集中的下一句操作 fetchmany() 获取制定数量的记录 fetchall() 获取结构集的全部记录 close()关闭当前游标

创建数据表呢,懒得敲,就是链接数据库后,写一个SQL创建表的语句给变量sql,然后使用cursor.execute(sql)来执行SQL语句

我直接写增删改查吧

# _*_ coding: utf-8 _*_
# @Time     : 2023/9/8 19:31
# @Author   : jiaojiao
import pymysql

connect = pymysql.connect(
   host = "localhost",
   user = "root",
   password = "761943",
   db = "studentdb",
   charset = "utf8",
   cursorclass = pymysql.cursors.DictCursor    #游标类型
   )
cursor = connect.cursor()
# 数据列表
data = [("零基础学Python",'Python','79.80','2018-5-20'),
        ("Python从入门到精通",'Python','69.80','2018-6-18'),
        ("零基础学PHP",'PHP','69.80','2017-5-21'),
        ("PHP项目开发实战入门",'PHP','79.80','2016-5-21'),
        ("零基础学Java",'Java','69.80','2017-5-21'),
        ]
try:
    # 执行sql语句,插入多条数据
    cursor.executemany("insert into books(name, category, price, publish_time) values (%s,%s,%s,%s)", data)
    # 提交数据
    connect.commit()
except:
    # 发生错误时回滚
    connect.rollback()

# 关闭数据库连接
connect.close()

上面是向表中添加图书数据

注意什么使用了%s作为占位符,防止SQL注入

在写一个查询的吧

# _*_ coding: utf-8 _*_
# @Time     : 2023/9/8 19:31
# @Author   : jiaojiao
import pymysql

connect = pymysql.connect(
   host = "localhost",
   user = "root",
   password = "761943",
   db = "studentdb",
   charset = "utf8",
   cursorclass = pymysql.cursors.DictCursor    #游标类型
   )
cursor = connect.cursor()
sql = 'select * from books order by price '
with connect.cursor() as cursor:
    cursor.execute(sql)      # 执行SQL语句
    data = cursor.fetchall() # 获取全部数据

# 遍历图书数据
for book in data:
    print(f'图书:{book["name"]},价格:{book["price"]}')

connect.close() # 关闭连接

orm编程

对象关系映射(Object Relational Mapping)是一种程序设计技术,用于面向对象编程语言里不同类型系统的数据之间的转换。创建了一个可以在编程语言里使用的虚拟对象数据库罢了 面向对象是在软件工程的基本原则(如耦合、聚合、封装)基础上发展起来的,而关系型数据库则是在数学理论发展而来的,主要是解决这个不匹配问题,ORM技术应运而生。 ORM把数据库映射成对象。 数据表——>类 数据行——>对象 字段——>对象的属性 面向对象方式执行SQL语句:

sql = 'select * from books order by price'
cursor.execute(sql)
data = cursor.fetchall()

如果用ORM的话就是这样滴

data = Book.query.all()

ORM使用了面向对象的方式封装数据库的操作,开发者不用去了解SQL语句,只需要使用面向对象编程,直接与数据库交互,不关心底层代码实现。

  • 优点: orm的技术特点,提高了开发效率。可以自动对实体Entity对象与数据库中的Table进行字段与属性的映射;不用直接SQL编码,能够像操作对象一样从数据库中获取数据

  • 缺点: orm会牺牲程序的执行效率和会固定思维模式,在从系统结构上来看,采用orm的系统多是多层系统的,系统的层次太多,效率就会降低,orm是一种完全面向对象的做法,所以面向对象的做法也会对性能产生一定的影响。

python常用的ORM库

  • Django ORM、
  • SQLAlchemy
  • SQLObject
  • Peewee
  • Storm
  • 常用的也就前三个。嗯嗯嗯嗯,暂时了解的还不多,以后有时间再来说这几个有啥区别吧。

认真仔细看完本文的小伙伴们,可以点赞收藏并评论出你们的读后感。并可关注本博主,在今后的日子里阅读更多技术文哦~

如有错误或者言语不恰当的地方可在评论区指出,谢谢!
如转载此文请联系我征得本人同意,并标注出处及本博主名,谢谢 !