区别1:定义模型:
flask_sqlalchemy需要使用db.Column,而sqlalchemy则不需要
flask_sqlalchemy写法:
1 class Role(db.Model): 2 __tablename__ = 'roles' 3 id = db.Column(db.Integer, primary_key=True) 4 name = db.Column(db.String(64)) 5 user = db.relationship('User', backref='role') 6 7 def __repr__(self): 8 return '<Role %r>' % self.name
sqlalcehmy写法:
1 class EnvConfig(Base): 2 __tablename__="env_config" 3 id=Column(Integer,primary_key=True) 4 host = Column(String(50)) # 默认值 1 0:appapi.5i5j.com, 5 def __repr__(self): 6 return "<EnvConfig.%s>"%self.host
区别2:
flask_sqlalchemy使用定义字段类型时无须额外导入类型,一切类型都通过db对象直接调用
1 from flask import Flask 2 from flask_sqlalchemy import SQLAlchemy 3 4 app = Flask(__name__) 5 6 # 设置连接数据库的URL 7 # 不同的数据库采用不同的引擎连接语句: 8 # MySQL: mysql://username:password@hostname/database 9 10 app.config['SQLALCHEMY_DATABASE_URI'] ='mysql+mysqlconnector://root:admin123456@10.1.71.32:3306/test' 11 12 # 设置每次请求结束后会自动提交数据库的改动 13 app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True 14 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True 15 16 # 查询时显示原始SQL语句 17 app.config['SQLALCHEMY_ECHO'] = False 18 db = SQLAlchemy(app)
sqlalchemy需要单独导入字段声明类型:
1 from sqlalchemy.ext.declarative import declarative_base 2 from sqlalchemy import Column,Integer,Text,String,Enum 3 Base =declarative_base()