Flask-SQLAlchemy框架使用

举报
王建峰 发表于 2021/11/19 02:26:52 2021/11/19
【摘要】 以MySQL+SQLAlchemy的组合来对数据库进行管理,而Flask-SQLAlchemy是一种开发框架,对SQLAlchemy进行了一个简单的封装。下面使用Flask-SQLAlchemy的方法对数据库进行管理。   #config.py#数据库配置信息HOSTNAME = '127.0.0.1' #PORT ...

以MySQL+SQLAlchemy的组合来对数据库进行管理,而Flask-SQLAlchemy是一种开发框架,对SQLAlchemy进行了一个简单的封装。下面使用Flask-SQLAlchemy的方法对数据库进行管理。

 


      #config.py
      #数据库配置信息
      HOSTNAME = '127.0.0.1'    #
      PORT     = '3306'
      DATABASE = 'mydb'
      USERNAME = 'root'
      PASSWORD = 'wangjian'
      DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)
      #URI格式:dialect+driver://username:password@host:port/database
      #URI格式:dialect+driver://username:password@host:port/database
      # dialect是数据库的实现,比如MySQL、PostgreSQL、SQLite,并且转换成小写。
      # driver是Python对应的驱动,如果不指定,会选择默认的驱动,比如MySQL的默认驱动是MySQLdb。
      # username是连接数据库的用户名,
      # password是连接数据库的密码,
      # host是连接数据库的域名,
      # port是数据库监听的端口号,
      # database是连接哪个数据库的名字。
  
 

 


      #app.py
      from flask import Flask
      from flask_sqlalchemy import SQLAlchemy
      from config import DB_URI
      #需要安装依赖包 pymysql用来操作mysql、SQLAlchemy是数据库的ORM框架、Flask-SQLAlchemy是对SQLAlchemy的进一步抽象
      #pip install pymysql
      #pip install SQLAlchemy
      #pip install flask-sqlalchemy
      app = Flask(__name__)
      app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI   #载入配置
      #创建一个数据库引擎
      db = SQLAlchemy(app)
      #ORM类 与数据库表示映射关系
      class User(db.Model):
         id = db.Column(db.Integer, primary_key=True)
          username = db.Column(db.String(80), unique=True)
          email = db.Column(db.String(120), unique=True)
         def __init__(self, username, email):
              self.username = username
              self.email = email
         def __repr__(self):
             return '<User %s>' % self.username
      db.drop_all()    #删除所有表
      db.create_all()  #创建所有表
      #实例化一个ORM对象
      admin = User(username='admin',email='admin@example.com')
      guest = User('guest','guest@example.com')
      #通过session来完成ORM到数据库表格的映射
      # 添加记录
      db.session.add(admin)
      db.session.add(guest)
      db.session.commit()
      #查询数据库
      # users = User.query.all() #查询所有记录
      # print( type(users) )
      # for user in users:
      # print(user)
      # user = User.query.get(2) #get方法利用主键进行查询
      # print(type(user.id))
      # print(user.email)
      # users = User.query.filter_by(username="guest").first() # 使用条件过滤,最后得到一个记录的查询对象
      # print(users.email)
      users = User.query.all()  #查询所有记录
      print( type(users) )    #打印删除记录中的email值
      for user in users:
         print(user.email)
      #删除操作
      db.session.delete(guest)
      db.session.commit()
      users = User.query.all()  #查询所有记录
      print( type(users) )    #打印删除记录中的email值
      for user in users:
         print(user.email)
      if __name__ == '__main__':
          app.run()
  
 

      <class 'list'>
      admin@example.com
      guest@example.com
      <class 'list'>
      admin@example.com
  
 

 

文章来源: blog.csdn.net,作者:hinzer,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/feit2417/article/details/86590669

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。