添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
气势凌人的洋葱  ·  ArrayNode (Smithy API ...·  2 月前    · 
踏实的水煮鱼  ·  js ...·  6 月前    · 
气势凌人的围巾  ·  SpringBoot+HttpClient+ ...·  6 月前    · 
# mysql 不会认识utf-8,而需要直接写成utf8 SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT,                                                                       DATABASE) SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_ECHO = True

1.2引用Orm框架(exts.py)

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

1.3启动文件中注册(app.py)

from flask import Flask
# 引用数据库启动文件
from mapper.exts import db
# 引用数据库配置文件
import config
# 引用数据库
from controller.user_controller import *
app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)
app.register_blueprint(user, url_prefix="/user")
if __name__ == '__main__':
    app.run(debug=True)

项目和数据库文件下载地址: https://gitee.com/hahaguai007/python-flask-mysql

2.数据库操作

通过Flask提供的orm框架对数据库进行操作

2.1增加

@user.route('/add/<username>/<pwd>')
def add_user(username, pwd):
    print(username, pwd)
    userinfo = User(username=username, pwd=pwd)
    db.session.add(userinfo)
    db.session.commit()
    return jsonify("ADD_SUCCESS")

2.2删除

# 第一种
user1 = User.query.filter().first()
print(user1.id)
db.session.delete(user1)
db.session.commit()
# 第二种
user2 = User.query.filter(User.id==2).delete()
db.session.commit()

2.3修改

user1 = User.query.filter(User.id == id).first()
    user1.username = "我是修改后的"
    db.session.merge(user1)
    db.session.commit()

2.4查询

@user.route('/list')
def list_users():
    users = User.query.all()
    print(users)
    users_output = []
    for user in users:
        users_output.append(user.to_json())
    return jsonify(users_output)

2.4.1条件查询

如果不足请自行补充

1.filter_by和filter

两种写法根据版本的不同:

filter_by : 用于查询简单的列名,不支持比较运算符 filter filter_by 的功能更强大,支持比较运算符,支持 or_ in_ 等语法。

  1. data = UserInfo.query.filter(UserInfo.name=='1').all()

  2. data = UserInfo.query.filter_by(name='1').all()

1.  根据用户名查询符合条件的第一条数据
User.query.filter_by(username=username).first()
print("查询1:", user1.to_json())
2. 查询名字结尾字符为g的所有数据[开始/包含]
User.query.filter(User.username.endswith('g')).all()
User.query.filter(User.username.contains('g')).all()
3. 查询名字不等于wang的所有数据[2种方式]
 from sqlalchemy import not_
注意了啊:逻辑查询的格式:逻辑符_(类属性其他的一些判断)
User.query.filter(not_(User.username=='yang')).all()
User.query.filter(User.username!='yang').all()
4. 查询名字和邮箱都以 li 开头的所有数据[2种方式]
from sqlalchemy import and_
User.query.filter(and_(User.username.startswith('li'), User.email.startswith('li'))).all()
User.query.filter(User.username.startswith('li'), User.email.startswith('li')).all()
5. 查询password是 `123456` 或者 `email` 以 `itheima.com` 结尾的所有数据
from sqlalchemy import or_
User.query.filter(or_(User.pwd=='123456', User.email.endswith('tiantian.com'))).all()
6. 查询id为 [1, 3, 5, 7, 9] 的用户列表
User.query.filter(User.id.in_([1, 3, 5, 7, 9])).all()
7. 查询name为liu的角色数据 关系引用
# 举例 暂时没有 
User.query.filter_by(username='liu').first().role.name
8.获取第一条记录
User.query.first()
  • 根据用户名查询

#根据用户名查询
    user2 = User.query.filter_by(username=username)
    print("查询2:", user1.to_json())
  • 匹配用户名开头为1的用户

# 匹配用户名开头为1的用户
users = User.query.filter(User.username.startswith('1')).all()
print(users)
users_output = []
for user3 in users:
    users_output.append(user3.to_json())
    print("查询3:", users_output)
  • 根据ID查询

get方法没有数据返回None,不像django一样报错;只能id、查询,并且只能通过id的值查询,或者用ident=1

# 根据ID查询
user = User.query.get(userid)
print(user.to_json())

两种写法根据版本的不同:

  1. data = UserInfo.query.order_by(UserInfo.id).all() # 按照id升序

  2. data = UserInfo.query.order_by("id").all()

两种写法根据版本的不同:

  1. data = UserInfo.query.order_by(UserInfo.id.desc()).all() # 按照id降序

  2. data = UserInfo.query.order_by(db.desc("id")).all() # 按照id降序

user_list = User.query.order_by("username")    print(user_list)    users_output_list = []    for user4 in user_list:        users_output_list.append(user4.to_json())    print("查询4:", users_output_list)

3.区间查询

 # 查询TOP3
    user_list1 = User.query.limit(3).all()
    print(user_list1)
    users_output_list1 = []
    for user5 in user_list1:
        users_output_list1.append(user5.to_json())
    print("查询5:", users_output_list1)

2.5分页查询

  • 方式一:使用offset和limit( .offset(offset).limit(limit ))

  • 方式二:paginate分页支持( .paginte(page=2,per_page=1)

Pagination的对象:

  • has_prev/has_next——是否有上一页/下一页

  • Items——当前页的数据列表

  • prev_num/next_num——上一页/下一页的页码

  • total——总记录数

  • pages——总页数

http请求:127.0.0.1:5000/user/loadUserPage/2/1

@user.route('/loadUserPage/<int:page>/<int:per_page>')
def list_user(page, per_page):
    """ 用户分页 """
    # 每一页的数据大小-per_page 页码-page
    # 1. 查询用户信息
    user = User.query
    # 2. 准备分页的数据
    print(page, per_page)
    user_page_data = user.paginate(page, per_page=per_page)
    users_output = []
    for user in user_page_data.items:
        users_output.append(user.to_json())
    print("当前页的数据列表", users_output)
    print("是否有上一页", user_page_data.has_prev)
    print("是否下一页", user_page_data.has_next)
    print("上一页的页码", user_page_data.prev_num)
    print("下一页的页码", user_page_data.next_num)
    print("总记录数", user_page_data.total)
    print("总页数", user_page_data.pages)
    return jsonify(users_output)
""" 输出
当前页的数据列表 [{'pwd': '2', 'id': 2, 'username': '2', 'nick': '2'}]
是否有上一页 True
是否下一页 True
上一页的页码 1
下一页的页码 3
总记录数 7
总页数 7

源码地址:(自行去git clone)

https://gitee.com/hahaguai007/python-flask-mysql

公众号:不会写代码的阿P项目源码在文章最下方---&gt;项目结构:1.数据库连接池通过pip插入数据驱动依赖pip install flask-sqlalchemy 和 pip install pymysql1.1配置数据源(config.py)DIALECT = 'mysql'DRIVER = 'pymysql'USERNAME = 'root'PASSWORD = '123321'HOST = '127.0.0.1'PORT = '3306'DATA.
项目本身很简单,增删改查是几乎所有系统的骨架。正所谓万丈高楼平地起,学会了增删改查,航母就指日可待了:),光速入门,直接看演示图: https://github.com/mudfish/python-flask-user-crud说白了就是一个Web框架,能够让你快速开发出Python web应用。简单易用,大家直接看官网就行: https://flask.palletsprojects.com/en/3.0.x/quickstart/懒得折腾Pycharm了,直接Vscode安装pyhon和flask插件
1 系统概要说明 1.1 开发目的 闲暇时光想看看电影?我要看些什么好呢?百度推荐出来的烂片也不在其数,如果有一个真实反映影片的平台该多好,这就是淘智宝的产生,为电影连续剧爱好人群提供一个可以自由言论的平台,我喜欢的电影我可以发上去,看看别人是否也会喜欢,综合评价下来,影视爱好者一定能收获自己最想看的年度好片。 好片是千人的智慧产生,而不掺杂广告票房目的,如果我们都看过这部...
部署python flask项目到云服务器 这是我第一次写博客,写的不好请多多见谅。 操作环境是ubuntu16.04,使用xshell和xftp工具,记得进入root用户,如果没有需要设置,怎么设置后面更新。 Python 3.5.2(自带的,需要设置python为默认的python版本)然后安装pip(sudo apt-get install python-pip) sudo update-alternatives –install /usr/bin/python python /usr/bin/python2.7 1 sudo update-alternatives –install /
![logo-full](/Users/crack/Desktop/logo-full.png Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能 此文就已我一个初学者的视角来学习搭建fla...
Python-Flask是一个轻量级Python Web框架,它提供了许多组件和工具,方便开发人员快速构建Web应用程序。MySQL是一个流行的关系型数据库管理系统,常用于存储和管理Web应用程序的数据。 在Python-Flask中使用MySQL进行开发,我们可以选择使用MySQL官方提供的Python驱动程序或者第三方库如MySQLdb或PyMySQL。我们需要在Flask应用程序中引入这些库,并跟踪连接和游标对象以及执行SQL查询和操作,确保我们的应用程序能够正常查询和更新数据库中的数据。 在Python-Flask中使用MySQL进行开发时,我们需要考虑如何组织和结构化我们的代码以尽可能地提高代码的可读性和可维护性。我们可以考虑将数据访问和业务逻辑分开,将数据库操作封装到模型类或模块中,并将其从视图代码中分离出来。 为了提高数据库查询的效率,我们可以使用ORM(Object-Relational Mapping)工具如SQLAlchemy,将数据库表映射为Python对象,然后通过Python对象来执行数据库操作,使得我们不必直接编写SQL语句,而可以使用面向对象的方式轻松地操作数据库。 总之,使用Python-FlaskMySQL进行开发需要我们充分理解PythonMySQL的编程模型以及它们两者之间的集成方式,合理地组织和结构化我们的代码,并使用合适的工具和技术来实现我们的Web应用程序。
博客摘录「 解决git clone时client_loop: send disconnect: Connection reset by peer/s错误」2024年1月10日 CSDN-Ada助手: 推荐 CS入门 技能树:https://edu.csdn.net/skill/gml?utm_source=AI_act_gml 博客摘录「 解决git clone时client_loop: send disconnect: Connection reset by peer/s错误」2024年1月10日 CSDN-Ada助手: 不知道 CS入门 技能树是否可以帮到你:https://edu.csdn.net/skill/gml?utm_source=AI_act_gml JS Date时间格式化 wxc0209: QIANG JS Date时间格式化 清蒸鱼跃龙门: 原来还可以这样扩展已有类的方法 Date.prototype.format