Chapter 8. Understanding the Session and Exceptions
In the previous chapter, we did a lot of work with the session, and we avoided doing anything that could result in an exception. In this chapter, we will learn a bit more about how our objects and the SQLAlchemy session interact. We’ll conclude this chapter by purposely performing some actions incorrectly so that we can see the types of exceptions that occur and how we should respond to them. Let’s start by learning more about the session. First, we’ll set up an in-memory SQLite database using the tables from Chapter 6:
from
sqlalchemy
import
create_engine
from
sqlalchemy.orm
import
sessionmaker
engine
=
create_engine
(
'sqlite:///:memory:'
)
Session
=
sessionmaker
(
bind
=
engine
)
session
=
Session
()
from
datetime
import
datetime
from
sqlalchemy
import
(
Table
,
Column
,
Integer
,
Numeric
,
String
,
DateTime
,
ForeignKey
,
Boolean
)
from
sqlalchemy.ext.declarative
import
declarative_base
from
sqlalchemy.orm
import
relationship
,
backref
Base
=
declarative_base
()
class
Cookie
(
Base
):
__tablename__
=
'cookies'
cookie_id
=
Column
(
Integer
,
primary_key
=
True
)
cookie_name
=
Column
(
String
(
50
),
index
=
True
)
cookie_recipe_url
=
Column
(
String
(
255
))
cookie_sku
=
Column
(
String
(
55
))
quantity
=
Column
(
Integer
())
unit_cost
=
Column
(
Numeric
(
12
,
2
))
def
__init__
(
self
,
name
,
recipe_url
=
None
,
sku
=
None
,
quantity
=
0
,
unit_cost
=
0.00
):
self
.
cookie_name
=
name
self
.
cookie_recipe_url
=
recipe_url
self
.
cookie_sku
=
sku
self
.
quantity
=
quantity
self
.
unit_cost
=
unit_cost ...
Get Essential SQLAlchemy, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.