zoukankan      html  css  js  c++  java
  • flask写入数据库

    sqlalchemy是一个关系型数据库框架,它提供了高层的ORM 和底层的原生数据库的操作。

    sqlalchemy实际上是对数据库的抽象,通过python对象操作数据库,提高开发效率。

    安装 flask_sqlalchemy

    pip  install flask-sqlalchemy 

    如果链接是MySQL数据库,需要安装mysqldb

    pip install flask-myasldb

    数据库连接设置

    数据库使用url指定时,程序使用的数据库必须保存到flask配置对象的SQLALCHEMY_BATABASE_URL建中

    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:mysql@127.0.0.1:3306/myflask?charset=utf8'
    动态追踪修改设置,如果没有设置提示警告
    app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
    查询时显示原始SQL数据
    app.config['SQLALCHEMY_ECHO'] = True
     
    其他设置
     
     
     
     
    当配置完成时,需要去MySQL中创建项目中要使用的数据库
    进入MySQL命令 : mysql -uroot -p(密码)  (密码一般是mysql)
     
     连接其他数据库
    完整连接url 列表请跳转到sqlalchemy下面的文档,常见的连接字符串有:
     Postgres, Mysql; Oracle; SQLite(以sqlite开头是四个斜线)
    例:posthresql://scott:localhost/mydatabase

    sqlite:////scott:localhost/mydatabase

     mqlalchemy常用的字段类型
     mqlalchemy常用的关系选项
     mqlalchemy常用的列选项
     
     数据库的基本操作
    在数据库中可以进行增删改查操作,数据库分为原生的mql 和flask_sqlalchemy 数据库。
    在flask_sqlalchemy 数据库中会话使用 db.session表示,在把数据写入数据库前,要先将数据添加到会话中调用commit()方法提交,查询操作是通过query对象操作数据
     
     
     
    首先要导入模块
    from flask import Flask ,render_template
    #导入第三方连接库
    from flask_sqlalchemy import SQLAlchemy
     
     
    #创建对象
    app = Flask(__name__)
    #载入配置文件
    app.config.from_pyfile('config.ini')

    # #指定数据库连接还有库名
    # app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:mysql@127.0.0.1:3306/myflask?charset=utf8'



    #制定配置,用来省略操作
    # app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True


    #实例化一个数据库对象
    db = SQLAlchemy(app)


    #建立一个类来影射数据库表,将数据库的模型作为参数传入
    class User(db.Model):
    #声明表名
    _tablename_ = 'user'
    #建立函数字段
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(200))
    password = db.Column(db.String(200))


    #数据库入库操作
    @app.route('/')
    def index():

    #增,入库逻辑
    #声明对象
    user = User(name='你好你好',password='456456')
    #调用添加方法
    db.session.add(user)
    # #提交入库
    # db.session.commit()
    return '这里是首业'


    #数据库删除操作
    @app.route('/del')
    def del_user():
    #根据摸个字段作删除,filter_by蕾仕于where条件限定
    #翻译为:delete from user where id= 1
    User.query.filter_by(id = 1).delete()

    return '这里是删除操作'


    #数据库改操作(改)
    @app.route('/edit')
    def edit_user():
    #根据摸个字段做修改操作
    #翻译为 update user set name = '张三' where id = 8
    User.query.filter_by(id = 8).update({'name':'张三'})
     
    #使用原生语句进行修改操作
    db.session.execute("update user set password = '123321' where id = 9")
    return '这里是改操作'

    #数据库的查询操作(查)
    @app.route('/select')
    def select_user():
    #简单的全量查询
    ##翻译为:select * from user
    ulist = User.query.all()
    print(ulist)
    for i in ulist:
    print(i.name)

    #直取一条
    ulist = User.query.first()
    print(ulist)

    #使用原生的sql语句
    #翻译以为: select * from user order by desc limit 1,2
    # items = db.session.execute('select * from user order by id desc limit 1,2')
    items = db.session.execute('select * from user ')

    #将结果集强转为list
    items = list(items)
     
     
    return render_template('day5.html',items = items)
     
    #程序入口
    if __name__ == "__main__":
    app.run()
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Android应用之个人应用软件开发(2)【签到功能和记账】
    抽象类判断日期能否被2整除
    Android应用之个人应用软件开发(3)【SQLite数据库及理财功能实现】
    移动终端网页游戏移植研发框架【服务器及客户端交互处理】
    DirectX学习资料
    列宁的故事
    Managed DirectX +C# 开发(入门篇)(七)
    Managed DirectX +C# 开发(入门篇)(六)
    Managed DirectX +C# 开发(入门篇)(三)
    C#不同窗口类中的变量相互调用
  • 原文地址:https://www.cnblogs.com/chengdongzi/p/10174979.html
Copyright © 2011-2022 走看看