flask-数据库模型的创建

 FLASK-SQLAlchemy是flask中一个数据库管理类框架,它封装了对大部分数据库的支持,包括关系型数据库Mysql/Postgres/SQLlite,以及Redis/MongoDB等非关系型数据库,通过SQLAlchemy,我们可以不用再关心SQL语句的使用,只需进行将数据库建模,并像管理一个类对象一样管理数据库即可.

        我们先进行数据库的建模,所谓建模就是创建一个类,那建模之前,我们先进行准备工作-引入相关SQLAlchemy库,创建SQLAlchemy对象等等.

 

 
  1. from flask_sqlalchemy import SQLAlchemy

  2. import os

  3. basedir=os.path.abspath(os.path.dirname(__file__))

  4. app=Flask(__name__)

  5. app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///'+os.path.join(basedir+'data.sqlite')

  6. app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True

  7. db=SQLAlchemy(app)

       第一行引入SQLAlchemy模块,第二行和第三行引入os模块,然后找到当前文件所在的绝对地址,第五行是在app的config中加入数据库的链接信息,我们现在链接的时SQLite数据库,我们可以通过改变app.config['SQLALCHEMY_DATABASE_URI']的值来链接不同的数据库,常用的数据库链接如下表:

 

      数据库引擎                                                            URL

       MySql                                            mysql://username:password@hostname/database

      Postgres                                        postgresql://username:password@hostname/database

     SQLite(Unix)                                 sqlite:absolute/path/to/database

     SQLite(Windows)                         sqlite:c:/absolute/path/to/database

    第四行设置自动提交,相当于在表中更新数据后,不用再手动进行commit,最后一行将目前的app对象创建SQLAlchemy实例db.

    以上就是引入了一个SQLAlchemy对象实例,下面要做的就是利用该实例对数据库进行建模.我们说过,所谓建模就是将数据库的表格映射成一个类,而类中的属性就是表中的字段,同时这个类必须从SQLAlchemy的Model进行继承.

   

 
  1. class Role(db.Model):

  2. __tablename__='roles'

  3. id = db.Column(db.Integer,primary_key=True)

  4. name = db.Column(db.String(64),unique=True)

  5.  
  6. def __repr__(self):

  7. return '<Role %s>'%self.name

  8.  class User(db.Model):

  9. __tablename__='users'

  10. id=db.Column(db.Integer,primary_key=True)

  11. name=db.Column(db.String(64),unique=True)

  12.  
  13. def __repr__(self):

  14. return '<User %s>'%self.name


上面两个类分别建立roles表和users表两个模型,两个模型中分别声明了id和name两个字段,同时设置了主键和唯一性约束,以后我们操作Role或者User对象就相当与操作roles表和users表.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值