30、flask--数据库的基本操作(上)

1、 排序:

1. order_by:可以指定根据这个表中的某个字段进行排序,如果在前面加了一个-,代表的是降序排序

# 排序---根据创建时间排序(create_time)
articles = session.query(Article).order_by(Article.create_time).all()

2. 在模型定义的时候指定默认排序:有些时候,不想每次在查询的时候都指定排序的方式,可以在定义模型的时候就指定排序的方式。有以下两种方式:
    * relationship的order_by参数:在指定relationship的时候,传递order_by参数来指定排序的字段。

author = relationship("User",backref=backref("articles",order_by=create_time.desc()))


    * 在模型定义中,添加以下代码:

__mapper_args__ = {
         "order_by": title
       }

    即可让文章使用标题来进行排序。
3. 正序排序与倒序排序:默认是使用正序排序。如果需要使用倒序排序,那么可以使用这个字段的`desc()`方法,或者是在排序的时候使用这个字段的字符串名字,然后在前面加一个负号“-”。

# 排序---根据创建时间倒序(create_time)。两张实现方式
# articles = session.query(Article).order_by(Article.create_time.desc()).all()
articles = session.query(Article).order_by("-create_time").all()

完整代码:

#encoding: utf-8

from sqlalchemy import create_engine,Column,Integer,Float,Boolean,DECIMAL,Enum,Date,DateTime,Time,String,Text,func,and_,or_,ForeignKey,Table
from sqlalchemy.dialects.mysql import LONGTEXT
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker,relationship,backref
# 在Python3中才有这个enum模块,在python2中没有
import enum
from datetime import datetime
import random

HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'test_flask_learn'
USERNAME = 'root'
PASSWORD = '123456'

# dialect+driver://username:password@host:port/database
DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8mb4".format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)

engine = create_engine(DB_URI)

Base = declarative_base(engine)

session = sessionmaker(engine)()

class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True, autoincrement=True)
    username = Column(String(50),nullable=False)


class Article(Base):
    __tablename__ = 'article'
    id = Column(Integer, primary_key=True, autoincrement=True)
    title = Column(String(50), nullable=False)
    create_time = Column(DateTime,nullable=False,default=datetime.now)
    uid = Column(Integer,ForeignKey("user.id"))
    
    author = relationship("User", backref=backref("articles", order_by=create_time.desc()))
    # author = relationship("User",backref=backref("articles",order_by=create_time.desc()))
    # 在模型定义的时候指定默认排序
    # __mapper_args__ = {
    #     "order_by": create_time.desc()
    # }

    def __repr__(self):
        return "<Article(title:%s,create_time:%s)>" % (self.title,self.create_time)


# Base.metadata.drop_all()
# Base.metadata.create_all()

# 自己添加几条数据
# article1 = Article(title='title2')
# user = User(username='bj2')
# user.articles = [article1]
# session.add(user)
# session.commit()
#
# 排序---根据创建时间排序(create_time)
# articles = session.query(Article).order_by(Article.create_time).all()
# 排序---根据创建时间倒序(create_time)。两张实现方式
# articles = session.query(Article).order_by(Article.create_time.desc()).all()
# articles = session.query(Article).order_by("-create_time").all()
# print(articles)

2、limit、offset和切片操作:

1. limit:可以限制每次查询的时候只查询几条数据。

# limit的使用
articles = session.query(Article).limit(10).all()

2. offset:可以限制查找数据的时候过滤掉前面多少条。

# offset的使用。如offset(8),过滤前面8条数据,从第9掉数据开始
articles = session.query(Article).limit(10).offset(8).all()


3. 切片:可以对Query对象使用切片操作,来获取想要的数据。可以使用`slice(start,stop)`方法来做切片操作。也可以使用`[start:stop]`的方式来进行切片操作。一般在实际开发中,中括号的形式是用得比较多的。希望大家一定要掌握。示例代码如下:

articles = session.query(Article).order_by(Article.id.desc())[0:10]

完整代码:

from sqlalchemy import create_engine,Column,Integer,Float,Boolean,DECIMAL,Enum,Date,DateTime,Time,String,Text,func,and_,or_,ForeignKey,Table
from sqlalchemy.dialects.mysql import LONGTEXT
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker,relationship,backref
# 在Python3中才有这个enum模块,在python2中没有
import enum
from datetime import datetime
import random

HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'test_flask_learn'
USERNAME = 'root'
PASSWORD = '123456'

# dialect+driver://username:password@host:port/database
DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8mb4".format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)

engine = create_engine(DB_URI)

Base = declarative_base(engine)

session = sessionmaker(engine)()

class Article(Base):
    __tablename__ = 'article'
    id = Column(Integer,primary_key=True,autoincrement=True)
    title = Column(String(50),nullable=False)
    create_time = Column(DateTime,default=datetime.now)

    def __repr__(self):
        return "<Article(title: %s)>" % self.title

# Base.metadata.drop_all()
# Base.metadata.create_all()
#
# 添加100条数据
# for x in range(100):
#     title = "title %s" % x
#     article = Article(title=title)
#     session.add(article)
# session.commit()

# limit的使用
# articles = session.query(Article).limit(10).all()
# print(articles)
# offset的使用。如offset(8),过滤前面8条数据,从第9掉数据开始
# articles = session.query(Article).limit(10).offset(8).all()
# print(articles)
# 切片操作。根据Article的id倒序排序,切片99--90条数据
articles = session.query(Article).order_by(Article.id.desc())[0:10]
print(articles)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Flask中使用PyCharm插入数据库,需要先安装相应的数据库驱动程序和Flask扩展。然后,您可以使用SQLAlchemy等ORM工具来连接和操作数据库。在PyCharm中,您可以使用内置的数据库工具来管理和查询数据库。具体的步骤和代码实现可以参考Flask和PyCharm的官方文档和教程。 ### 回答2: 在使用Flask和PyCharm插入数据库时,可以按照以下步骤进行操作: 1. 首先,确保已经安装了Flask和PyCharm,并且已经配置了数据库连接。 2. 在项目文件夹中创建一个新的Python文件,用于编写数据库插入的代码。 3. 导入必要的模块和库,例如flask_sqlalchemy和数据库相关的模块。 4. 定义数据库表模型,可以使用ORM(对象关系映射)来创建数据库表。 5. 在应用程序的配置中,配置数据库连接的相关信息,例如数据库的URL和其他连接参数。 6. 创建一个视图函数,用于具体处理插入数据库的逻辑。在该函数中,首先创建一个数据库实例,然后使用该实例进行数据库插入操作。 7. 在视图函数中,将需要插入数据库的数据传递给数据库实例,调用插入方法将数据插入到数据库中。 8. 保存并提交事务,以确保数据的插入操作被正确执行。 9. 在Flask应用程序中注册视图函数,使其可以在特定的URL被访问到。 10. 运行Flask应用程序,并通过访问对应的URL来触发插入数据库的逻辑。 总结: 在Flask和PyCharm中插入数据库,需要导入相关库和模块,配置数据库连接信息,定义数据库表模型,编写视图函数来处理插入操作,并注册视图函数以使其可以被访问到。 ### 回答3: 不好意思,您给出的问题有点模糊,不太清楚您具体想要了解关于flask-pycharm插入数据库的内容。不过,我可以给您提供一些基本的关于如何在Flask项目中使用PyCharm插入数据库的信息。 在Flask项目中使用PyCharm插入数据库,您需要先进行一些准备工作。首先,您需要安装相应的数据库驱动,例如MySQL的驱动程序pymysql,或者其他数据库的驱动程序,根据您具体使用的数据库而定。 接下来,您需要在您的Flask项目中配置数据库连接。在项目的配置文件中,您可以使用类似于以下的代码配置数据库连接: ``` app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@localhost/database_name' ``` 其中,`username`和`password`是您自己数据库的用户名和密码,`localhost`是数据库所在的主机地址,`database_name`是您所使用的数据库的名称。您也可以根据实际情况使用其他数据库的连接字符串。 一旦您配置好数据库连接,接下来就可以在您的Flask应用程序中使用数据库了。您可以使用SQLAlchemy库来进行数据库的插入操作。首先,您需要在您的代码中导入SQLAlchemy模块: ``` from flask_sqlalchemy import SQLAlchemy ``` 然后,您可以创建一个数据库对象,并配置它与您的Flask应用程序关联: ``` db = SQLAlchemy(app) ``` 接下来,则可以使用这个对象进行数据库操作,例如插入数据。您可以创建一个数据模型来定义您要插入的数据表的结构,然后使用这个模型来插入数据。例如,假设您有一个名为`User`的数据模型,您可以使用以下代码来创建一个新的用户并插入到数据库中: ``` user = User(username='testuser', password='testpassword') db.session.add(user) db.session.commit() ``` 这将会在数据库的`User`表中插入一条新的用户数据。 综上所述,以上是一个简单的关于如何在Flask项目中使用PyCharm插入数据库的概述。具体的实现方式可能会因为您使用的数据库和数据模型的不同而有所不同,但这个过程的基本思路是类似的。希望这些信息能对您有所帮助。如果您有更具体的问题,欢迎继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值