sqlalchemy与mysql区别_flask_sqlalchemy和sqlalchemy的区别有哪些?

本文主要对比了Flask-SQLAlchemy和SQLAlchemy在定义模型、声明字段类型和查询方式上的区别。Flask-SQLAlchemy简化了数据库操作,如无需手动导入字段类型,而SQLAlchemy则需要单独导入。在查询上,SQLAlchemy使用session.query,Flask-SQLAlchemy则通过模型名.query进行查询。
摘要由CSDN通过智能技术生成

概要的说:

SQLAlchemy是python社区使用最广泛的ORM之一,SQL-Alchmy直译过来就是SQL炼金术。

Flask-SQLAlchemy集成了SQLAlchemy,它简化了连接数据库服务器、管理数据库操作会话等各类工作,让Flask中的数据处理体验变得更加轻松。

虽然我们要使用的大部分类和函数都由SQLAlchmey提供,但在Flask-SQLAlchemy中,大多数情况下,我们不需要手动从SQLAlchemy导入类或函数。在sqlalchemy和sqlalchemy.orm模块中实现的类和函数

,以及其他几个常用的模块和对象都可以作为db对象的属性调用。当我们创建这样的调用时,Flask-SQLAlchemy会自动把这些调用转发到对应的类、函数或模块

具体区别:

区别1:定义模型:

flask_sqlalchemy需要使用db.Column,而sqlalchemy则不需要

flask_sqlalchemy写法:

1 classRole(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 '' % self.name

sqlalcehmy写法:

1 classEnvConfig(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 ""%self.host

区别2:声明字段类型

flask_sqlalchemy使用定义字段类型时无须额外导入类型,一切类型都通过db对象直接调用

1 from flask importFlask2 from flask_sqlalchemy importSQLAlchemy3

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'] =True14 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] =True15

16 #查询时显示原始SQL语句

17 app.config['SQLALCHEMY_ECHO'] =False18 db = SQLAlchemy(app)

sqlalchemy需要单独导入字段声明类型:

1 from sqlalchemy.ext.declarative importdeclarative_base2 from sqlalchemy importColumn,Integer,Text,String,Enum3 Base =declarative_base()

完整的代码片断:

#导入依赖

from sqlalchemy importColumn, String, create_enginefrom sqlalchemy.orm importsessionmakerfrom sqlalchemy.ext.declarative importdeclarative_base#创建对象的基类

Base =declarative_base()#定义User对象

classUser(Base):#表的名字

__tablename__ = 'user'

#表的结构

id = Column(String(20), primary_key=True)

name= Column(String(20))#初始化数据库链接

engine = create_engine('mysql+mysqlconnector://root:123456@localhost:3306/test')#创建DBSession类型

DBSession = sessionmaker(bind=engine)#添加#创建Session对象

session =DBSession()#创建User对象

new_user = User(id='5', name='Bob')#添加到session

session.add(new_user)#提交

session.commit()#关闭session

session.close()#查询#创建session

session =DBSession()#利用session创建查询,query(对象类).filter(条件).one()/all()

user = session.query(User).filter(User.id=='5').one()print('type:{0}'.format(type(user)))print('name:{0}'.format(user.name))#关闭session

session.close()#更新

session =DBSession()

user_result= session.query(User).filter_by(id='1').first()

user_result.name= "jack"session.commit()

session.close()#删除

session =DBSession()

user_willdel= session.query(User).filter_by(id='5').first()

session.delete(user4._willdel)

session.commit()

session.close()

区别3:

查询方式不一样

sqlalchemy通过session.query(模型名)查询

而flask_sqlalchemy则是通过 模型名.query查询

#SQLAlchemy

result_id =session.query(ScriptRunResult).order_by(ScriptRunResult.id.desc()).all()[0].id

result_id=

#Flask-SQLAlchemy

ScriptRunResult.query.order_by(ScriptRunResult.id.desc()).all()[0].id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值