Skip to content

Commit ca85b7a

Browse files
committed
Migrate to v2 api
1 parent 88e5b8e commit ca85b7a

File tree

3 files changed

+22
-14
lines changed

3 files changed

+22
-14
lines changed

fastapi-sqlalchemy/alembic/versions/bea5e58f3328_add_data.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
from pathlib import Path
1010

1111
from alembic import op
12-
from sqlalchemy import orm
12+
from sqlalchemy import orm, select
13+
from sqlalchemy.exc import NoResultFound
1314

1415
from main.models import Director, Movie
1516

@@ -33,12 +34,11 @@ def upgrade():
3334
json_data = json.load(f)
3435

3536
for movie_data in json_data:
36-
director = (
37-
session.query(Director)
38-
.filter_by(name=movie_data["director"]["name"])
39-
.first()
40-
)
41-
if not director:
37+
try:
38+
director = session.execute(
39+
select(Director).filter_by(name=movie_data["director"]["name"])
40+
).scalar_one()
41+
except NoResultFound:
4242
director = Director(name=movie_data["director"]["name"])
4343
session.add(director)
4444
session.commit()
@@ -57,4 +57,10 @@ def upgrade():
5757

5858

5959
def downgrade():
60-
pass
60+
bind = op.get_bind()
61+
session = orm.Session(bind=bind)
62+
63+
session.execute("DELETE FROM movies")
64+
session.execute("DELETE FROM directors")
65+
session.commit()
66+
session.close()

fastapi-sqlalchemy/main/database.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
SQLALCHEMY_DATABASE_URL = "sqlite:///./db.sqlite3"
77

88
engine = create_engine(
9-
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
9+
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}, future=True
1010
)
11-
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
11+
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine, future=True)
1212

1313
Base = declarative_base()

fastapi-sqlalchemy/main/models.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from sqlalchemy import Column, Integer, String, Float, ForeignKey
1+
from sqlalchemy import Column, Integer, String, Float, ForeignKey, select
22
from sqlalchemy.orm import relationship, joinedload
33
from sqlalchemy.orm import Session
44

@@ -28,10 +28,12 @@ class Movie(Base):
2828

2929

3030
def get_movies(db: Session, limit: int = 250):
31-
return (
32-
db.query(Movie)
31+
query = (
32+
select(Movie)
3333
.options(joinedload(Movie.director))
3434
.order_by(Movie.imdb_rating.desc())
3535
.limit(limit)
36-
.all()
3736
)
37+
38+
result = db.execute(query).unique()
39+
return result.scalars()

0 commit comments

Comments
 (0)