Python Web 框架-FLASK day05

本文介绍了使用 FLASK-SQLAlchemy 框架进行数据库查询、删除和修改的方法,包括 filter()、filter_by()、limit()、offset()、order_by() 等查询过滤器,以及如何执行删除和更新操作。
摘要由CSDN通过智能技术生成

 

目录

 

1.FLASK-SQLALCHEMY - 查询

2.FLASK-SQLALCHEMY - 删除 和 修改

3.FLASK-SQLALCHEMY - 关系映射


day04回顾

1.模型
  使用名为SQLAlchemy的ORM框架,并且需要 Flask-SQLAlchemy
  配置
    from flask_sqlalchemy import SQLAlchemy

    app.config['SQLALCHEMY_DATABASE_URI']='mysql://username:pwd@host:port/dbname'
    app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

    db = SQLAlchemy(app)
     

  1. 定义模型
    class MODELNAME(db.Model):
        __tablename__ = 'TABLENAME'

      COLUMN_NAME = db.Column(db.TYPE,OPTIONS) 
      ...

 


1.FLASK-SQLALCHEMY - 查询

  1. 基于 db.session 进行查询
    1. db.session.query()
      该函数会返回一个Query对象,类型为 BaseQuery,包含了指定实体类对应的表中所有的数据

      该函数也可以接受多个参数,参数表示的是要查询哪个实体
    2. 查询执行函数
      目的:在查询的基础上得到最终想要的结果
      语法:db.session.query(...).查询执行函数()
      函数 说明
      all() 以列表的方式返回查询的所有结果
      first() 返回查询中的第一个结果,如果没有结果,则返回None
      first_or_404() 返回查询中的第一个结果,如果没有结果,则终止并返回404
      count() 返回查询结果的数量

       

    3. 查询过滤器函数
      作用:在查询的基础山,筛选部分列出来
      语法:db.session.query(...).过滤器函数().查询执行函数()
       

      函数 说明
      filter() 指定条件进行过滤(多表,单表,定值,不定值...)
      filter_by() 按等值条件进行过滤
      limit() 按限制行数获取
      order_by() 根据指定条件进行排序
      group_by 根据指定条件进行分组

      详解:

      1. filter()

        1. 查询年龄 大于30的 Users的信息
          db.session.query(Users).filter(Users.age>30).all()
          注意:条件必须由 模型类.属性 来组成

        2. 查询年龄 大于30且id大于5 的Users的信息
          db.session.query(Users).filter(Users.age>30,Users.id>5).all()

        3. 查询年龄 大于30或id大于5 的Users的信息
          注意:查询 或 的操作,要借助 0r_()
          db.session.query(Users).filter(or_(Users.age>30,Users.id>5)).all()

        4. 查询id等于5的Users的信息
          db.session.query(Users).filter(Users.id==5).first()

        5. 查询email中包含‘w’ 的users的信息 - 模糊查询 like
          db.session.query(Users).filter(Users.email.like('%w%')).all()

        6. 查询id在 [1,2,3] 之间的Users 的信息
          db.session.query(Users).filter(Users.id.in_([1,2,3])).all()

      2. filter_by()

        1. 查询 id=5的Users的信息
          db.session.query(Users).filter_by(id=5).first()

      3. limit()

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个简单的Python爬虫示例,可以爬取嘉兴市某个气象网站的天气预报数据,并将数据存储到本地的SQLite数据库中。同时,还可以使用Flask框架开发一个简单的天气预报网站,展示最近10天的天气信息。 1. 确定数据来源:我们可以使用中国天气网(http://www.weather.com.cn)提供的天气预报数据,具体的URL是:http://www.weather.com.cn/weather/101210301.shtml 2. 编写爬虫程序:我们可以使用Python的requests和BeautifulSoup库来实现爬虫程序。具体的代码如下: ```python import requests from bs4 import BeautifulSoup import sqlite3 # 爬取天气预报数据 def get_weather_data(): url = 'http://www.weather.com.cn/weather/101210301.shtml' r = requests.get(url) r.encoding = 'utf-8' soup = BeautifulSoup(r.text, 'html.parser') # 获取最近10天的天气预报数据 weather_list = [] for i in range(1, 11): date_str = soup.select_one(f'#day_{i} > h1').text date = date_str.split('(')[0] weather = soup.select_one(f'#day_{i} > p.wea').text temperature = soup.select_one(f'#day_{i} > p.tem').text weather_list.append((date, weather, temperature)) return weather_list # 存储天气预报数据到SQLite数据库 def save_to_database(weather_list): conn = sqlite3.connect('weather.db') c = conn.cursor() c.execute('''CREATE TABLE IF NOT EXISTS weather (date text, weather text, temperature text)''') c.execute('DELETE FROM weather') c.executemany('INSERT INTO weather VALUES (?, ?, ?)', weather_list) conn.commit() conn.close() if __name__ == '__main__': weather_list = get_weather_data() save_to_database(weather_list) ``` 3. 开发网站:我们可以使用Flask框架来实现一个简单的天气预报网站。具体的代码如下: ```python from flask import Flask, render_template import sqlite3 app = Flask(__name__) # 获取天气预报数据 def get_weather_data(): conn = sqlite3.connect('weather.db') c = conn.cursor() c.execute('SELECT * FROM weather') weather_list = c.fetchall() conn.close() return weather_list # 渲染天气预报网站页面 @app.route('/') def index(): weather_list = get_weather_data() return render_template('index.html', weather_list=weather_list) if __name__ == '__main__': app.run() ``` 4. 前端设计:我们可以使用HTML和CSS来实现网站页面的设计,同时使用Jinja2模板来渲染数据。具体的代码如下: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>嘉兴天气预报</title> <style> table { border-collapse: collapse; width: 80%; margin: auto; } th, td { border: 1px solid black; text-align: center; padding: 10px; } th { background-color: #f2f2f2; } </style> </head> <body> <h1>嘉兴天气预报</h1> <table> <tr> <th>日期</th> <th>天气</th> <th>温度</th> </tr> {% for weather in weather_list %} <tr> <td>{{ weather[0] }}</td> <td>{{ weather[1] }}</td> <td>{{ weather[2] }}</td> </tr> {% endfor %} </table> </body> </html> ``` 5. 部署网站:将以上代码保存到一个目录中,启动Python虚拟环境,安装所需的依赖库,并运行`python app.py`即可启动网站。需要注意的是,生产环境中应该使用Gunicorn或者uWSGI等Web服务器来部署网站,并使用Nginx或者Apache等反向代理服务器进行负载均衡和安全保护。 以上是一个简单的Python爬虫和网站开发示例,具体的实现过程可能会有所不同。希望对您有所帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值