python Flask连接mysql
Flask连接mysql写在前面关于怎样使用python部署flask,在这篇博客中我已经进行了说明。项目链接为:https://github.com/SEN-Wanted/BackEnd项目文件结构Appserver/├── app│├── static/# 静态资源文件夹│├── templates/# 模板文件夹│├──...
·
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.py)
2.使配置生效,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()
至此数据库连接和操作可以正常进行。
更多推荐
已为社区贡献1条内容
所有评论(0)