python开发低代码数据可视化大屏:flask_sqlalchemy增删改查语句

简介: python开发低代码数据可视化大屏:flask_sqlalchemy增删改查语句

config.py配置文件

# 配置数据库信息
db_config = {
    'host': 'localhost',
    'port': '3306',
    'database': 'bdpoi',
    'username': 'bdpoi',
    'password': 'rKADFaJxAG2b7Lfd'
}


操作语句

import json
from config import *
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text
app = Flask(__name__)
app.config['SECRET_KEY'] = 'xufeJjtC9Lsuv8m7D7ZZfph3a6MjpMpJ'
# url的格式为,数据库的协议://用户名:密码@ip地址:端口号(默认可以不写)/数据库名
app.config["SQLALCHEMY_DATABASE_URI"] = 'mysql://{username}:{password}@{host}:{port}/{database}'.format(**db_config)
# 动态追踪数据库的修改
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
app.config['SQLALCHEMY_ECHO'] = True
# 创建数据库的操作对象
db = SQLAlchemy(app)
'''
db.Column属性
primary_key 如果设为 True,这列就是表的主键
unique  如果设为 True,这列不允许出现重复的值
index 如果设为 True,为这列创建索引,提升查询效率
nullable  如果设为 True,这列允许使用空值;如果设为 False,这列不允许使用空值
default 为这列定义默认值
'''
class Poi(db.Model):
    __tablename__ = "po_poi"
    poi_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    poi_name = db.Column(db.String(255), nullable=True)
    poi_category_id = db.Column(db.Integer, nullable=True)
    # repr()方法显示一个可读字符串
    def __repr__(self):
        return 'Poi:%s' % self.poi_name
# 默认首页
@app.route("/")
def get_index():
    return "py-LockDataV API"
# 创建数据表
@app.route("/cre")
def create_index():
    db.create_all()
    return "创建数据表,状态:OK"
# 新增数据
@app.route("/add")
def add_index():
    p1 = Poi(poi_name='宁波商会', poi_category_id="2")
    p2 = Poi(poi_name='大海大厦', poi_category_id="1")
    p3 = Poi(poi_name='国骅大厦', poi_category_id="2")
    db.session.add_all([p1, p2, p3])
    db.session.commit()
    # 如何防止重复提交
    return "新增数据,状态:OK"
# 删除数据
@app.route("/del")
@app.route("/del/")
@app.route("/del/<poi_id>")
def del_index(poi_id=None):
    if poi_id:
        # get_or_404 如果id不存在,抛出404页面
        # del_id = Poi.query.get_or_404(poi_id)
        # get方式
        del_id = Poi.query.get(poi_id)
        if del_id:
            db.session.delete(del_id)
            db.session.commit()
        else:
            return "Id不存在数据,状态:Fail"
        return "删除数据,状态:OK"
    else:
        return "poi_id为空,越权操作"
# 查询数据
@app.route("/get")
def get_data():
    # in查询
    # Poi.query.filter(Poi.poi_name.in_('A', 'B', 'C', 'D'))
    # 限制查询
    # Poi.query.filter(poi_name=18).offset(2).limit(3)  # 跳过二条开始查询,限制输出3条
    # 排序
    # results = Poi.query.order_by('poi_id')  # 按默认升序,在前面加-号为降序'-age'
    # results = Poi.query.order_by(text("-poi_id"))
    results = Poi.query.filter_by(poi_category_id=2).all()
    # 定义字典和序列
    rows = []
    data = {}
    for rs in results:
        row = {"poi_id": rs.poi_id, "poi_name": rs.poi_name, "poi_category_id": rs.poi_category_id}
        rows.append(row)
    data['code'] = 0
    data['msg'] = 'OK'
    data['data'] = rows
    # 输出标准的JSON字符串
    json_str = json.dumps(data, ensure_ascii=False)
    return json_str
# 获取数据库记录API接口
@app.route("/poi")
@app.route("/poi/")
@app.route("/poi/<pid>")
def get_poi(pid=None):
    # total = Poi.query.count()
    # print(total)
    if pid is None:
        results = Poi.query.all()
    else:
        results = Poi.query.filter_by(poi_id=pid).all()
    # 定义字典和序列
    rows = []
    data = {}
    for rs in results:
        row = {"poi_id": rs.poi_id, "poi_name": rs.poi_name, "poi_category_id": rs.poi_category_id}
        rows.append(row)
    data['code'] = 0
    data['msg'] = 'OK'
    data['data'] = rows
    # 输出标准的JSON字符串
    json_str = json.dumps(data, ensure_ascii=False)
    return json_str
if __name__ == '__main__':
    app.run(debug=True)


lockdatav Done!

相关文章
|
4天前
|
JSON 测试技术 数据库
|
5天前
|
Linux Android开发 iOS开发
开源的Python库,用于开发多点触控应用程序
Kivy是一款开源Python库,专为开发多点触控应用设计,支持Android、iOS、Linux、OS X和Windows等平台。本文将指导你使用Kivy创建“Hello World”应用并打包成Android APK。首先通过`pip install kivy`安装Kivy,然后创建并运行一个简单的Python脚本。接着,安装Buildozer并通过`buildozer init`生成配置文件,修改相关设置后,运行`buildozer -v android debug`命令打包应用。完成构建后,你将在`./bin/`目录下找到类似`your-app-debug.apk`的文件。
12 2
|
7天前
|
Python
python flask跨域处理
python flask跨域处理
19 1
|
10天前
|
SQL 安全 Go
SQL注入不可怕,XSS也不难防!Python Web安全进阶教程,让你安心做开发!
在Web开发中,安全至关重要,尤其要警惕SQL注入和XSS攻击。SQL注入通过在数据库查询中插入恶意代码来窃取或篡改数据,而XSS攻击则通过注入恶意脚本来窃取用户敏感信息。本文将带你深入了解这两种威胁,并提供Python实战技巧,包括使用参数化查询和ORM框架防御SQL注入,以及利用模板引擎自动转义和内容安全策略(CSP)防范XSS攻击。通过掌握这些方法,你将能够更加自信地应对Web安全挑战,确保应用程序的安全性。
38 3
|
15天前
|
JSON 测试技术 数据库
Python的Flask框架
Python的Flask框架
|
6天前
|
iOS开发 Python
6-8|如何使用Python语言开发IOS混淆工具
6-8|如何使用Python语言开发IOS混淆工具
|
前端开发 JavaScript 数据安全/隐私保护
Flask开发微电影网站(十)
1.后台管理之角色管理 1.1 角色管理之定义角色表单 在app的admin目录的forms.py文件中,定义角色表单 # 角色表单 class RoleForm(FlaskForm): name = StringField( label="角色名称", va...
1201 0
|
前端开发 关系型数据库 数据安全/隐私保护
Flask开发微电影网站(九)
1.后台管理之电影管理 1.1 电影管理之所有电影收藏列表 1.1.1 电影管理之电影收藏列表视图函数 在admin目录下的views.py文件中定义电影收藏列表视图函数 电影收藏列表视图函数需要被登录控制装饰器和权限控制装饰器同时装饰 @admin.
983 0
|
前端开发 JavaScript 数据安全/隐私保护
Flask开发微电影网站(八)
1.后台管理之电影预告管理 1.1 定义电影预告表单 在app的admin目录的forms.py文件中,定义电影预告表单 # 预告表单 class PreviewForm(FlaskForm): title = StringField( label="预告标题", ...
1103 0
|
前端开发 JavaScript Python
Flask开发微电影网站(七)
1.后台管理之电影管理 1.1 定义电影表单 在app的admin目录的forms.py文件中,定义电影表单 # 电影表单 class MovieForm(FlaskForm): title = StringField( label="片名", validat...
1146 0
下一篇
无影云桌面