当前位置:   article > 正文

flask-sqlalchemy 使用详解_sqlalchemyautoschema

sqlalchemyautoschema

      之前我们讲了许多关于sqlalchemy的文章,今天就为大家讲讲flask_sqlalchemy的使用!在使用flask_sqlalchemy之前,请确保安装了flask_sqlalchemy,安装代码:

pip install flask_sqlalchemy

  flask_sqlalchemy用法与sqlalchemy类似,两者主要区别是sqlalchemy独立于flask使用。
  

  首先,我们先创建一个flask项目,并命名为 flask_sqlalchemy_demo

      创建完flask项目后,它会自动生成如下代码

  1. from flask import Flask
  2.   
  3. app = Flask(__name__)
  4.   
  5. @app.route('/')
  6. def hello_world():
  7.   return 'Hello World!'
  8.   
  9. if __name__ == '__main__':
  10.   app.run()

    接着,我们从flask_sqlalchemy中导入SQLAlchemy并实例化,代码如下(注意:导入的SQLAlchemy跟我们之前讲的sqlalchemy不一样,我们现在导入的SQLAlchemy是一个类,之前所讲的sqlalchemy是一个包)

  1. from flask_sqlalchemy import SQLAlchemy
  2. db = SQLAlchemy(app)

     实力化db对象后,我们再创建一个User模型,在创建User模型前,我们要先做好数据库相关配置,不然flask项目怎么与数据库相连?是吧!我们就先做好数据库配置,代码如下:

  1. DIALCT = "mysql"
  2. DRIVER = "pymysql"
  3. USERNAME = "root"
  4. PASSWORD = "admin"
  5. HOST = "127.0.0.1"
  6. PORT = "3306"
  7. DATABASE = "flask_sqlalchmy_demo"
  8. DB_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALCT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
  9. app.config["SQLALCHEMY_DATABASE_URI"] = DB_URI

     数据库连接和sqlalchemy连接数据库代码一样,定义好数据库连接后,我们就可以定义模型了(注意:模型继承的类是db.Model,而不是Base,数据类型及列属性不用从sqlalchemy导入,直接从db导入即可),代码如下:

  1. class User(db.Model):
  2. __tablename__ = "user"
  3. id = db.Column(db.Integer , primary_key=True , autoincrement=True)
  4. name = db.Column(db.String(50) , nullable=False)

     创建模型后,我们让它映射到数据库中,之前我们用sqlalchemy是Base.create_all(),现在我们用flask_sqlalchemy,其代码如下:

db.create_all()

     运行创建数据库代码,然后 show tables查看是否映射到数据库中。运行代码截图如下:

     OK,数据表已成功映射到数据库中,下面我们再讲讲flask_sqlalchemy简单增删查改操作,因为我之前讲过关于sqlalchemy数据操作的文章《使用sqlalchemy对数据库表进行增删查改操作》!

    添加数据

  1. user1 = User(name = "jack")
  2. user2 = User(name = "bob")
  3. db.session.add_all([user1,user2])
  4. db.session.commit()

    结果如下:

    查询数据

  1. results = User.query.all()
  2. print(results)

    结果如下

    修改数据(将name为jack修改成blue)

  1. result = User.query.filter(User.name == "jack").first()
  2. result.name = "blue"
  3. db.session.commit()

   结果如下

删除数据(将name为bob的数据删除)

  1. result = User.query.filter(User.name == "bob").first()
  2. db.session.delete(result)
  3. db.session.commit()

   结果如下

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/613144
推荐阅读
相关标签
  

闽ICP备14008679号