首页 > 编程语言 >Python进阶七

Python进阶七

时间:2023-05-29 19:22:10浏览次数:36  
标签:语句 execute 进阶 Python WSGI cursor 服务器 name

访问数据库

import sqlite3

# 连接一个数据库,要是没有就会自己创建一个
conn = sqlite3.connect("MySQL.db")
# 创建一个游标,用于执行SQL语句
cursor = conn.cursor()


## 创建表 创建表的一般结构就是:create table <表名> (<属性名字 类型>,......);
# 或者也可以把要执行的语句先写出来,再传给execute()方法。
cursor.execute("create table stu(name varchar(20) primary key,age int(8),sex varchar(20))")
print("表已经创建完成")

## 增 向表中插入数据的结构是: :insert into <表名> ( <属性名字>,......) values ( 值 1 ,值2,......)值记得带引号。
# 同样也可以先把值给写出来,再传给execute方法。中间要写属性的括号可以不写,写了更清楚一些。
# cursor.execute("insert into stu (name ,age ,sex) values ('li' , 22 ,'male')")
value = "insert into stu (name ,age ,sex) values ('li',22,'male')"
cursor.execute(value)

# 插入多行的数据,可以使用executemany()这个方法,不过需要传入两个参数,一个是插入语句,一个是值的列表
list_students_values = [('wang',19,'female'),
                        ('zhang',21,'female'),
                        ('he',20,'female')]
sql_insert = "insert into stu (name,age,sex) values (?,?,?)"
cursor.executemany(sql_insert,list_students_values)


# 改 更新数据库信息:update 数据表 set 属性名 = 值 where 条件表达式
# 先更改一行的数据
sql_update = "update stu set age = 23 where name = 'wang'"
cursor.execute(sql_update)
# 同样可以更改多行的数据,记住一个通配符'?'。用于匹配的,注意要有括号。
cursor.executemany("update stu set age=? where name=? ",
                   (
                       (20,'zhang'),
                       (20,'he')#把zhang,he的年纪改为20
                   ))
# 更改之后提交事务,用连接提交事务
conn.commit()
# 可以通过rowcount来查看修改了几条数据
print("所以修改了%s条数据"%cursor.rowcount)


## 查
# sqlite_master是sqlite数据库内置的一个表,由系统写入,自己不能写入,而且是只读的一个表,当删除数据库里面所有表的时候,这个表也就不存在了。
# 里面记录的你自己创建的表的信息,通过这个语句可以查看到这个表,是一个列表,里面每个表的信息作一个元组
# 每个元组存放一个表的信息,这个元组有五个元素,是表的类型table,名字,表的名字,索引和创建这个表的sql语句
# cursor.execute("select * from sqlite_mater")
# print(cursor.fetchall())
# pragma语句可以查看表的信息,用来查看表的属性,而用select语句可以查看表里面值的信息
# cursor.execute("pragma table_info('sqlite_mater')")
# print(cursor.fetchall())
# 查询表的信息数据语句是:select * from table_name where 条件语句
cursor.execute("select * from stu")
print(cursor.fetchall())


# 删除表,直接使用drop tabel + 表的名字就可以删除掉这个表了
# cursor.execute("drop table user")

# 最后记得关闭游标和连接,先关游标,再断开连接
cursor.close()
conn.close()

使用SQLAlchemy库以及ORM框架

ORM(Object Rational Mapping对象关系映射)

将python中的对象和关系数据库MySQL进行映射,这样就不需要操作复杂的SQL语句了。
说白了就是将SQL语句转换成python语句
无非就是将MySQL的操作给映射成对象,就可以这样理解,如果我们像操作MySQL或者SQLite那样写一句sql语言,然后交给execute去操作,这种由人自己写的难免会出现错误,所以使用sqlchemy库,将这些东西都映射成对象,不容易出错。
其实sqlchemy对本地数据库MySQL操作还需要借助MySQL来进行连接,这就是create_engine函数的作用,创建连接,连接到之后无非也就是对数据库进行增删改查的操作,具体的可以见ORM.py那个文件,里面也有注释。

Web开发

HTTP协议简介

当我们点击F12进入网页开发者模式:Elements显示网页结构;Networks显示浏览器和服务器的通信。
HTML负责定义页面的内容;CSS负责控制页面元素样式;JS负责页面的逻辑交互。

WSGI接口

WSGI服务网关接口,是web服务器和web应用程序或框架之间的一种接口。(所以一直就搞错了,之前的理解是WSGI接口是在客户端与服务器端的接口,一直把应用程序当成客户端,其实不是这样的,WSGI都是属于服务器端的东西)

所以一个正常的服务器端,有两个部分:一部分是web应用就是框架,理解起来比较抽象,就是用于保存html文件的;一部分是服务器用来接收到浏览器发送的http请求然后解析然后从application里面获取到html文件然后发送响应。

所以有个这个WSGI协议规范,我们就可以专注于写自己的Application的东西就是HTML这些,而且可以兼容广泛的服务器。
WSGI协议规定,Application只要符合接收俩服务器的参数envir和start_response就可以使用这个服务器。

所以在Application我们只负责写什么东西给服务器然后由服务器发送给客户端,即浏览器。
envir:一个包含所有http请求信息的字典对象;
start_response:一个发送http响应的函数,一般作为响应头发送;
一般从envir里面获取到请求信息,start_response()函数接收两个参数,一个是HTTP响应码,一个是一组list表示的HTTP Header,每个Header用一个包含两个str的tuple表示。

Application函数写完之后,由服务器来调用这个函数,所有符合WSGI规范的服务器都可以调用这个函数。

python内置的wsgiref模块就相当于一个小型的服务器负责接收解析http请求和发送http响应,并且可以调用application。




这里提一下这个environ这个对象里面的['PATH_INFO'][1:]这个返回的就是你在浏览器输入的网址url

再来说明一下过程,由WSGI—Server服务器调用Application里面的函数,获取到需要发送给客户端即浏览器的信息。
WSGI-Servser服务器端

Application端

其实这样一看WSGI接口实际上非常简单。

框架的使用

flask框架的使用让我们不用管environ传来的url进行处理,我们只需要专注于一个url对应什么函数处理。
可以先看一下前面有装饰器,就说明这个url对应下面的这个函数进行处理。

标签:语句,execute,进阶,Python,WSGI,cursor,服务器,name
From: https://www.cnblogs.com/huanc/p/17441383.html

相关文章

  • python中测试方法所用的时间—timeit
    方法代码使用timeit方法测试两个函数的运行速度importtimeitstrlist=['Thisisalongstringthatwillnitkeepinmemory.'forninrange(10000)]defuse_join():#使用字符串的join方法连接多个字符串return''.join(strlist)defues_plus():#使用运算符+连接多个字......
  • python使用hTTP方法
    Python中可以使用requests库来发送HTTP请求,其中包括GET、POST、PUT、DELETE等方法。下面是一个使用requests库发送HTTP请求的示例:importrequests#发送GET请求response=requests.get('ExampleDomain')#发送POST请求data={'key1':'value1','key2':'val......
  • python 实现google authenticator 认证
    importosimporttracebackimportpyotpfromqrcodeimportQRCode,constantsclassGoogleAuthenticatorClient:def__init__(self,secret_key=None):self.secret_key=secret_keydefcreate_secret(self):"""生......
  • python 读取、写入、追加、覆盖xls文件
    python读取、写入、追加、覆盖xls文件0、写在前面测试源xls是这样的1、读取xlsdefread_xls(filename:str,sheet_name:str)->List[list]:filename=os.path.abspath(filename)assertos.path.isfile(filename),f'{filename}isnotfile'assertfilen......
  • Python使用to_csv导出文件时参数注意事项
    使用to_csv导出文件时,一定要指定index参数和encoding参数这两个参数;index参数:默认为True,会添加一列标记数据索引。encoding参数:如果不指定utf_8_sig,使用默认参数值,则导出的文件可能会有乱码或串列。cake_data.to_csv(r"C:\E\data.csv",index=False,encoding='utf_8_sig')......
  • Python中的Union这个类的使用
    在Python中,Union是typing模块中定义的一个类,用于表示多个类型中的任意一种类型。Union类型可以用于表示参数或函数返回值等多种情况下可能的不同类型。具体而言,Union类型可以使用typing.Union[type1,type2,...]的语法来定义,其中type1、type2等参数为可能的类型。例......
  • Python——基于数据挖掘的上市公司财务造假识别(制造业)
    制造业importpandasaspdimportnumpyasnp%matplotlibinlineimportmatplotlib.pyplotaspltimportseabornassnscolor=sns.color_palette()fromscipyimportstatsfromscipy.statsimportnorm,skewt1=pd.read_csv("制造业.csv")t1_train=t1.d......
  • Python工具箱系列(三十四)
    SQLAlchemy是著名的ORM(ObjectRelationalMapping-对象关系映射)框架。其主要作用是在编程中,把面向对象的概念跟数据库中表的概念对应起来。对许多语言(例如JAVA/PYTHON)来说就是定义一个对象,并且这个对象对应着一张数据库的表。而这个对象的实例,就对应着表中的一条记录。其整体思......
  • python:yaml模块
    python:yaml模块https://www.jianshu.com/p/eaa1bf01b3a6https://www.runoob.com/w3cnote/yaml-intro.html......
  • Python压缩JS文件,重点是 slimit
    摘要:PythonWeb程序员必看系列,学习如何压缩JS代码。本文分享自华为云社区《Python压缩JS文件,PythonWeb程序员必看系列,重点是slimit》,作者:梦想橡皮擦。本篇博客将学习压缩JS代码,首先要学习的模块是jsmin。jsmin库Python中的jsmin库来压缩JavaScript文件。这个库......