如何用peewee查询某张数据表中id最大的数据
时间: 2023-02-08 18:09:26 浏览: 104
使用 Peewee 查询某张数据表中 ID 最大的数据可以这样做:
```python
from peewee import *
db = SqliteDatabase('my_database.db')
class MyModel(Model):
class Meta:
database = db
# Find the maximum id
max_id = MyModel.select(fn.Max(MyModel.id)).scalar()
# Query the record with that id
record = MyModel.get(MyModel.id == max_id)
print(record.id)
```
这里, `MyModel` 是你要查询的数据表的模型类.
在第3行里调用了`.select(fn.Max(MyModel.id)).scalar()`方法来找到最大的id,在第5行使用了`MyModel.get(MyModel.id == max_id)`来找到那条记录.
注意,这里假设了您的数据表中有且只有一个名为 "id" 的列作为主键.
如果您的数据表中有其他列也要作为查询条件,可以在get()里使用多个查询条件,例如:
MyModel.get(MyModel.id == max_id,MyModel.name == "some_name")
如果您还没有使用peewee连接数据库的话,可以在初始化数据库连接的时候使用一下这个函数
```python
db.connect()
```
相关问题
fastapi Tortoise-ORM、SQLAlchemy、peewee使用orm查询user数据表里面admin用户的例子
假设我们有一个 User 数据表,其中包含以下字段:id、username、password、email、is_admin。
以下是使用三种 ORM 库查询 User 表中 is_admin 为 True 的用户的示例代码:
使用 Tortoise ORM:
```python
from tortoise.queryset import QuerySet
class User(models.Model):
id = fields.IntField(pk=True)
username = fields.CharField(50)
password = fields.CharField(50)
email = fields.CharField(50)
is_admin = fields.BooleanField(default=False)
async def get_admin_users() -> QuerySet:
return await User.filter(is_admin=True)
```
使用 SQLAlchemy:
```python
from sqlalchemy import create_engine, Column, Integer, String, Boolean
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
username = Column(String(50))
password = Column(String(50))
email = Column(String(50))
is_admin = Column(Boolean, default=False)
engine = create_engine('sqlite:///users.db')
Session = sessionmaker(bind=engine)
def get_admin_users():
session = Session()
return session.query(User).filter(User.is_admin == True).all()
```
使用 peewee:
```python
from peewee import Model, SqliteDatabase, CharField, BooleanField
db = SqliteDatabase('users.db')
class User(Model):
username = CharField()
password = CharField()
email = CharField()
is_admin = BooleanField(default=False)
class Meta:
database = db
def get_admin_users():
return User.select().where(User.is_admin == True)
```
以上三种 ORM 库的代码都可以查询 User 表中 is_admin 为 True 的用户。注意,这里使用的数据库都是 SQLite,您可以根据需要更改数据库配置。
Python peewee 批量修改数据的方式
您可以使用 peewee 的 update 方法来批量修改数据,例如:
```python
from peewee import *
from models import MyModel
# 批量将 age 字段增加 1
MyModel.update(age=MyModel.age + 1).execute()
# 批量将 name 字段修改为 "new_name"
MyModel.update(name='new_name').where(MyModel.id < 10).execute()
```
以上代码将会修改 MyModel 表中的数据,将 age 字段的值增加 1 或将 name 字段的值修改为 "new_name"。其中,第一个例子将会修改表中所有数据的 age 字段,第二个例子将会修改 id 小于 10 的数据的 name 字段。