# Never do this! 🚨 Continue reading. user_id = input("Type the user ID: ") statement = f"SELECT * FROM hero WHERE id = {user_id};" results = database.execute(statement)
defselect_heroes(): with Session(engine) as session: statement = select(Hero) results = session.exec(statement) heroes = results.all() #返回一个包含所有对象的列表 print(heroes)
Compact Version
1 2 3 4 5 6 7 8
# Code above omitted 👆
defselect_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() print(heroes)
# Code below omitted 👇
SELECT().WHERE() AND SELECT FROM WHERE
1 2 3
SELECT id, name, secret_name, age FROM hero WHERE name = "Deadpond"
1 2 3 4 5 6 7 8 9 10
# Code above omitted 👆
defselect_heroes(): with Session(engine) as session: statement = select(Hero).where(Hero.name == "Deadpond") results = session.exec(statement) for hero in results: print(hero)
# Code below omitted 👇
可以看出来只是加了where方法
多个where
1 2 3
SELECT id, name, secret_name, age FROM hero WHERE age >=35AND age <40
1 2 3 4 5 6 7 8 9 10
# Code above omitted 👆
defselect_heroes(): with Session(engine) as session: statement = select(Hero).where(Hero.age >= 35).where(Hero.age < 40) results = session.exec(statement) for hero in results: print(hero)
# Code below omitted 👇
Another Method
1 2 3 4 5 6 7 8 9 10
# Code above omitted 👆
defselect_heroes(): with Session(engine) as session: statement = select(Hero).where(Hero.age >= 35, Hero.age < 40) results = session.exec(statement) for hero in results: print(hero)
# Code below omitted 👇
INDEX(26/2/2)
index是数据库内部用来对某一列数据建立一个索引表的关键字,在很多情况下都能加快查询效率
1 2
CREATE INDEX ix_hero_name ON hero (name)
1 2 3 4 5 6 7 8
from sqlmodel import Field, Session, SQLModel, create_engine, select