python Flask连接mysql

Flask连接mysql

写在前面

关于怎样使用python部署flask,在这篇博客中我已经进行了说明。
项目链接为:https://github.com/SEN-Wanted/BackEnd

项目文件结构

Appserver/
├── app
│   ├── static/      # 静态资源文件夹
│   ├── templates/   # 模板文件夹
│   ├── json_test/   # 用来存放测试文件
│   ├── __init__.py  # 初始化文件
│   ├── store_info.py # blueprint
│   ├── user_info.py # blueprint
│   ├── order_info.py # blueprint
│   ├── store_by_id.py # blueprint
│   ├── orders_by_user_id.py # blueprint
│   ├── type_search.py # blueprint
│   ├── user_login.py # blueprint
│   ├── models.py # 数据格式
│   ├── createdb.py # 创建数据库
│   └── view.py # 调用blueprint
├── config.py    # 配置文件
├── run.py # 主程序文件
├── requirements     # 需求文件
└── README.md

flask+mysql

这次预期项目为一个扫码点餐系统,关于是否使用mysql这个问题小组成员有不同的看法,觉得数据量太小没有必要使用mysql,但为了之后的优化,最终数据库选用的mysql。
在flask2.0中不再支持MySQLdb,因此选用pymysql。
1.建立连接
建立链接需要从两部分入手:

1.连接到mysql数据库(修改配置文件 - config.py2.使配置生效,SQLAlchemy实例化数据库(配置初始文件 - app/__init__.py

config.py

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:12345678@localhost:3306/mydb'
# 'mysql+pymysql://用户名称:密码@localhost:端口/数据库名称'
SQLALCHEMY_TRACK_MODIFICATIONS = True

app/__init__.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app, use_native_unicode='utf8')

from . import models,views,store_info,user_info,order_info,user_login,type_search

2.建立关系app/models.py
这个部分是将数据库中的各章表的元素及关系对应起来,构建对应的关系,可以用app/createdb.py进行文件创建,也可以定义关系之后直接对数据库中的对象进行操作,这一部分代码可以在项目地址中找到。

3.对数据库操作
这时对数据库进行操作其实就实例化一张表,from .models import User,通过实例化的张表进行进行操作。
例如:
有张用户表结构如下:
这里写图片描述
则app/model.py可以这样写:定义其关系如下

# -*- coding: utf-8 -*-
from datetime import datetime, date
from . import app
from . import db
from passlib.apps import custom_app_context as pwd_context
from itsdangerous import (TimedJSONWebSignatureSerializer
                          as Serializer, BadSignature, SignatureExpired)

class User(db.Model):
    """用户"""
    __tablename__ = 'users'
    __table_args__ = {'mysql_engine': 'InnoDB'}  # 支持事务操作和外键
    id = db.Column(db.String(32), doc='手机号码', primary_key=True)
    nickname = db.Column(db.String(20), doc='昵称', default='Wanted User', nullable=False, unique=True)
    password_hash = db.Column(db.String(128), doc='密码', nullable=False)
    payPassword = db.Column(db.String(32), doc='支付密码', nullable=False)
    money = db.Column(db.Float, doc='账户余额', default=50, nullable=False)
    description = db.Column(db.String(50), doc='个性签名', default='这个人很懒,什么也没留下', nullable=False)
    isAdmin = db.Column(db.Boolean, doc='是否管理员', default=False)

    orders = db.relationship('Order', backref='users', cascade='all', lazy='dynamic')
    coupons = db.relationship('Coupon', backref='users', cascade='all', lazy='dynamic')
    favorites = db.relationship('Favorite', backref='users', cascade='all', lazy='dynamic')
    comments = db.relationship('Comment', backref='users', cascade='all', lazy='dynamic')

现在我们想要新建一个用户:

 user1 = User(id = username, nickname= username, password_hash = password, payPassword = password, money = 0, isAdmin = 0)

查找用户nickname为“lalala“:

user_info1 = User.query.filter_by(nickname = 'lalala').first()

至此数据库连接和操作可以正常进行。

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Python Flask和ECharts连接MySQL数据库的示例: 1. 首先,安装必要的库: ``` pip install flask pip install pymysql pip install echarts ``` 2. 然后,创建一个名为“app.py”的Flask应用程序,并导入必要的库: ```python from flask import Flask, render_template, request import pymysql import json from pyecharts.charts import Bar from pyecharts import options as opts from pyecharts.globals import ThemeType ``` 3. 连接MySQL数据库,并编写查询语句: ```python # 连接MySQL数据库 conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='password', db='database', charset='utf8') # 编写查询语句 sql = "SELECT * FROM table" cursor = conn.cursor() cursor.execute(sql) result = cursor.fetchall() cursor.close() conn.close() # 处理查询结果 data = [] for row in result: data.append({'name': row[0], 'value': row[1]}) ``` 4. 创建ECharts图表,并在Flask应用程序中呈现: ```python # 创建柱状图 bar = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .add_xaxis([x['name'] for x in data]) .add_yaxis("数据", [y['value'] for y in data]) .set_global_opts(title_opts=opts.TitleOpts(title="数据可视化")) ) # 在Flask应用程序中呈现 app = Flask(__name__) @app.route("/") def index(): return render_template("index.html") @app.route("/data") def get_data(): return json.dumps(data) @app.route("/chart") def get_chart(): return bar.dump_options_with_quotes() if __name__ == "__main__": app.run() ``` 5. 最后,创建一个名为“index.html”的HTML文件,并使用ECharts呈现图表: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>数据可视化</title> <script src="https://cdn.bootcdn.net/ajax/libs/echarts/4.8.0-rc.1/echarts.min.js"></script> </head> <body> <div id="chart" style="width: 800px; height: 600px;"></div> <script> var chart = echarts.init(document.getElementById('chart')); var data = JSON.parse('{{ get_data() }}'); option = {{ get_chart() }}; chart.setOption(option); </script> </body> </html> ``` 这就是一个基本的Python Flask和ECharts连接MySQL数据库的示例。您可以根据实际情况进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值