zoukankan      html  css  js  c++  java
  • Flask使用MySql数据库

    环境说明

    Centos7 + python3.6 + mysql5.7
    

    1.安装Flask-SQLAlchemy,pymyql驱动

    pip install flask-sqlalchemy
    pip intall pymysql
    
    

    2.使用Flask-SQLAlchemy

    Flask-SQLAlchemy数据库URL
    常用的数据库引擎:

    数据库引擎 URL
    MySql mysql+pymysql://username:password@host/database
    Postgres postgresql://username:password@host/database

    app.py编辑

    #导入模块
    from flask_sqlalchemy import SQLAlchemy
    import pymysql
    
    #创建flask对象
    app = Flask(__name__)
    
    #配置flask配置对象中键:SQLALCHEMY_DATABASE_URI
    
    app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://username:password@hostname/database"
    
    #配置flask配置对象中键:SQLALCHEMY_COMMIT_TEARDOWN,设置为True,应用会自动在每次请求结束后提交数据库中变动
    
    app.config['SQLALCHEMY_COMMIT_TEARDOWN'] = Ture
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
    app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
    
    #获取SQLAlchemy实例对象,接下来就可以使用对象调用数据
    
    db = SQLAlchemy(app)
    
    

    3.sqlalchemy列常见参数

    选择项 说明
    autoincrement True 是否自增
    primary_key True 是否是主键
    indexE TRUE 是否是索引
    unique True 是否是唯一
    nullable True 是否允许字段为空
    default 默认值

    4.字段类型

    类型名称 python类型 描述
    Integer int 常规整型,通常为32位
    SmallInteger int 短整型,通常为16位
    BigInteger int或long 精度不受限整型
    Float float 浮点型
    Numeric decimal 定点数
    String str 可变长度字符串
    Text str 可变长度字符串,适合大量文本
    Unicode unicode 可变长度Unicode字符串
    Boolean bool 布尔值
    Date datetime.date 日期类型
    Time datetime.time 时间类型
    DateTime datetime.datetime 日期时间类型
    Interval datetime.timedate 时间间隔
    Enum str 字符列表
    PickleType 任意Python对象 自动Pickle序列化
    LargeBinary str 二进制

    5.使用sqlalchemy

    from app import db
    #创建模型对象
    class User(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        username = db.Column(db.String(80), unique=True, nullable=False)
        email = db.Column(db.String(120), unique=True, nullable=False)
    
    def __repr__(self):
        return '<User %r>' % self.username
    
    # 1.创建表
    db.create_all()
    
    # 2.增加记录
    admin = User(username='admin', email='admin@example.com')
    guest = User(username='guest', email='guest@example.com')
    db.session.add(admin)
    db.session.add(guest)
    db.session.commit()
    
    #3.查询记录,注意查询返回对象,如果查询不到返回None
    User.query.all() #查询所有
    User.query.filter_by(username='admin').first()#条件查询
    User.query.order_by(User.username).all()#排序查询
    User.query.limit(1).all()#查询1条
    User.query.get(id = 123)#精确查询
    
    # 4.删除
    user = User.query.get(id = 123)
    db.session.delete(user)
    db.session.commit()
    

    6.具体实例代码可以看我的git有个flask+requests爬取小说展示项目

    基于flask+requests小说爬取项目

  • 相关阅读:
    5.11-上位机重新编程
    3.30-计算机系统互联方案
    3.25-两个操作者的通信模式
    3.23-重新定义操作者框架
    go 修改数组中对象的值不生效的解决方法
    go orm QueryTable Filter 不生效解决方法
    Beego orm.Install() 插入 [单条记录] 或 [一批记录],及出现异常 Handler crashed with error <Ormer> table: `.` not found, make sure it was registered with `RegisterModel()`
    go json 序列号、反序列号和数据类型转换
    go json 转换忽略字段、控制字段可有可无
    Flutter 使用 flutter_inappbrowser 加载 H5 及与 js 交互,Methods marked with @UiThread must be executed on the main thread . Current thread: JavaBridge
  • 原文地址:https://www.cnblogs.com/lonelyhiker/p/8486221.html
Copyright © 2011-2022 走看看