Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ba55547

Browse files
SQLAlchemy tutorial part 2: ORM models.
1 parent 3dc3e81 commit ba55547

File tree

5 files changed

+53
-7
lines changed

5 files changed

+53
-7
lines changed

‎sqlalchemy_tutorial/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
"""Script entry point."""
22
import pprint
33

4-
from sqlalchemy_tutorial.database.engine import db
4+
from sqlalchemy_tutorial.database.connect import db
5+
from sqlalchemy_tutorial.database.models import create_tables
6+
from sqlalchemy_tutorial.orm import orm_create_user
57
from sqlalchemy_tutorial.queries import fetch_job_listings, update_job_listing
68

79
# Print formatter
@@ -10,7 +12,10 @@
1012

1113
def init_script():
1214
"""Demonstrate SELECT and UPDATE queries with SQLAlchemy."""
15+
create_tables()
1316
rows_selected = fetch_job_listings(db)
1417
pp.pprint(rows_selected)
1518
rows_updated = update_job_listing(db)
1619
print(rows_updated)
20+
user = orm_create_user()
21+
print(user)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
from .engine import db
1+
from .connect import db, session

‎sqlalchemy_tutorial/database/engine.py renamed to ‎sqlalchemy_tutorial/database/connect.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Create database connection."""
22
from sqlalchemy import create_engine
3-
from sqlalchemy.orm import Session
3+
from sqlalchemy.orm import sessionmaker
44

55
from config import SQLALCHEMY_DATABASE_PEM, SQLALCHEMY_DATABASE_URI
66

@@ -12,4 +12,5 @@
1212
)
1313

1414
# Create database session
15-
session = Session(db)
15+
Session = sessionmaker(bind=db)
16+
session = Session()

‎sqlalchemy_tutorial/database/models.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,32 @@
44
from sqlalchemy.orm import relationship
55
from sqlalchemy.sql import func
66

7-
from sqlalchemy_tutorial.database import engine
7+
from sqlalchemy_tutorial.database import db
88

99
Base = declarative_base()
1010

1111

12+
class User(Base):
13+
"""User account."""
14+
15+
__tablename__ = "user"
16+
17+
id = Column(Integer, primary_key=True, autoincrement="auto")
18+
username = Column(String(255), unique=True, nullable=False)
19+
password = Column(Text, nullable=False)
20+
email = Column(String(255), unique=True, nullable=False)
21+
first_name = Column(String(255))
22+
last_name = Column(String(255))
23+
bio = Column(Text)
24+
avatar_url = Column(Text)
25+
last_seen = Column(DateTime)
26+
created_at = Column(DateTime, server_default=func.now())
27+
updated_at = Column(DateTime, onupdate=func.now())
28+
29+
def __repr__(self):
30+
return "<User %r>" % self.username
31+
32+
1233
class Player(Base):
1334
"""Individual player belonging to a team."""
1435

@@ -20,7 +41,7 @@ class Player(Base):
2041
last_name = Column(String(255), nullable=False)
2142
position = Column(String(100), nullable=False)
2243
injured = Column(Boolean)
23-
description = Column(Text, nullable=True)
44+
description = Column(Text)
2445
created_at = Column(DateTime, server_default=func.now())
2546
updated_at = Column(DateTime, onupdate=func.now())
2647

@@ -49,4 +70,4 @@ def __repr__(self):
4970

5071

5172
def create_tables():
52-
return Base.metadata.create_all(engine)
73+
return Base.metadata.create_all(db)

‎sqlalchemy_tutorial/orm.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"""Demonstrate the SQLAlchemy ORM"""
2+
from sqlalchemy_tutorial.database import session
3+
from sqlalchemy_tutorial.database.models import User
4+
5+
6+
def orm_create_user():
7+
"""Create a new instance of our `User` model."""
8+
user = User(
9+
username="admin",
10+
password="Please don't set passwords like this",
11+
email="admin@example.com",
12+
first_name="Todd",
13+
last_name="Birchard",
14+
bio="I write tutorials on the internet.",
15+
avatar_url="https://storage.googleapis.com/hackersandslackers-cdn/authors/todd_small@2x.jpg",
16+
)
17+
18+
session.add(user) # Add the user
19+
session.commit() # Commit the change

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /