mysql_query和session_Flask-Sqlalchemy 中,db.session.query() 和 model.query有什么区别是什么?...

from flask_sqlalchemy import Sqlalchemy

db = Sqlalchemy()

class User(db.Model):

__tablename__ == "test_table"

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

nick = db.Column(db.String(255))

sex = db.Column(db.Boolean(1))

# 第一种方法

def get_version_one(self):

return self.query.all()

# 第二种方法

def get_version_two(self):

return db.session.query(User).all()

# 删除数据时,我的处理方式:

def delete_user(self, uid):

data = self.query.get(uid)

if d:

try:

db.session.delete(d)

db.session.commit()

return Success(msg="ok")

except Expection as error:

logger.error(str(error))

db.session.rollback()

raise DeleteFailed(msg='sorry')

return NotFount(msg="xxxx")

如上述描述(这只是个事例代码),我使用flask-sqlalchemy时,有两种方法可以打印出所有的User信息,那究竟哪一种更好呢?为什么呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask-SQLAlchemy 是一个用于在 Flask 使用 SQLAlchemy 的工具,而 MySQL 全文检索则是 MySQL 数据库提供的一种用于进行全文搜索的技术。要在 Flask-SQLAlchemy 使用 MySQL 全文检索,需要进行以下步骤: 1. 确保 MySQL 数据库版本大于或等于 5.6,并且已经启用了全文检索功能。 2. 在 Flask-SQLAlchemy 定义需要进行全文检索的模型,并将其需要进行全文检索的字段定义为 Text 类型。 例如,定义一个名为 `Article` 的模型,并将其的 `content` 字段定义为 Text 类型: ```python from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class Article(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(128)) content = db.Column(db.Text) ``` 3. 创建全文索引。可以使用 SQLAlchemy 提供的 `text` 函数创建全文索引,也可以使用 MySQL 的原生语句创建全文索引。 使用 SQLAlchemy 的 `text` 函数创建全文索引的示例代码如下: ```python from sqlalchemy import text class Article(db.Model): __tablename__ = 'article' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(128)) content = db.Column(db.Text) __table_args__ = ( text('FULLTEXT idx_content (content)'), ) ``` 以上代码创建了一个名为 `idx_content` 的全文索引,该索引包含了 `content` 字段。 4. 使用全文检索进行搜索。可以使用 SQLAlchemy 提供的 `match` 函数进行全文检索,也可以使用 MySQL 的原生语句进行全文检索。 使用 SQLAlchemy 的 `match` 函数进行全文检索的示例代码如下: ```python from sqlalchemy import func articles = Article.query.filter(func.match(Article.content, 'search keyword')).all() ``` 以上代码将返回一个包含了符合搜索关键字的所有文章的列表。 使用 MySQL 的原生语句进行全文检索的示例代码如下: ```python articles = db.session.execute("SELECT * FROM article WHERE MATCH (content) AGAINST ('search keyword' IN NATURAL LANGUAGE MODE)").fetchall() ``` 以上代码使用 MySQL 的 `MATCH` 和 `AGAINST` 关键字进行全文检索,并返回一个包含了符合搜索关键字的所有文章的列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值