summaryrefslogtreecommitdiff
path: root/examples/association
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2019-01-06 01:14:26 -0500
committermike bayer <mike_mp@zzzcomputing.com>2019-01-06 17:34:50 +0000
commit1e1a38e7801f410f244e4bbb44ec795ae152e04e (patch)
tree28e725c5c8188bd0cfd133d1e268dbca9b524978 /examples/association
parent404e69426b05a82d905cbb3ad33adafccddb00dd (diff)
downloadsqlalchemy-1e1a38e7801f410f244e4bbb44ec795ae152e04e.tar.gz
Run black -l 79 against all source files
This is a straight reformat run using black as is, with no edits applied at all. The black run will format code consistently, however in some cases that are prevalent in SQLAlchemy code it produces too-long lines. The too-long lines will be resolved in the following commit that will resolve all remaining flake8 issues including shadowed builtins, long lines, import order, unused imports, duplicate imports, and docstring issues. Change-Id: I7eda77fed3d8e73df84b3651fd6cfcfe858d4dc9
Diffstat (limited to 'examples/association')
-rw-r--r--examples/association/basic_association.py65
-rw-r--r--examples/association/dict_of_sets_with_default.py14
-rw-r--r--examples/association/proxied_association.py68
3 files changed, 86 insertions, 61 deletions
diff --git a/examples/association/basic_association.py b/examples/association/basic_association.py
index 6714aa681..52476f184 100644
--- a/examples/association/basic_association.py
+++ b/examples/association/basic_association.py
@@ -12,8 +12,16 @@ of "items", with a particular price paid associated with each "item".
from datetime import datetime
-from sqlalchemy import (create_engine, Column, Integer, String, DateTime,
- Float, ForeignKey, and_)
+from sqlalchemy import (
+ create_engine,
+ Column,
+ Integer,
+ String,
+ DateTime,
+ Float,
+ ForeignKey,
+ and_,
+)
from sqlalchemy.orm import relationship, Session
from sqlalchemy.ext.declarative import declarative_base
@@ -21,20 +29,21 @@ Base = declarative_base()
class Order(Base):
- __tablename__ = 'order'
+ __tablename__ = "order"
order_id = Column(Integer, primary_key=True)
customer_name = Column(String(30), nullable=False)
order_date = Column(DateTime, nullable=False, default=datetime.now())
- order_items = relationship("OrderItem", cascade="all, delete-orphan",
- backref='order')
+ order_items = relationship(
+ "OrderItem", cascade="all, delete-orphan", backref="order"
+ )
def __init__(self, customer_name):
self.customer_name = customer_name
class Item(Base):
- __tablename__ = 'item'
+ __tablename__ = "item"
item_id = Column(Integer, primary_key=True)
description = Column(String(30), nullable=False)
price = Column(Float, nullable=False)
@@ -44,41 +53,40 @@ class Item(Base):
self.price = price
def __repr__(self):
- return 'Item(%r, %r)' % (
- self.description, self.price
- )
+ return "Item(%r, %r)" % (self.description, self.price)
class OrderItem(Base):
- __tablename__ = 'orderitem'
- order_id = Column(Integer, ForeignKey('order.order_id'), primary_key=True)
- item_id = Column(Integer, ForeignKey('item.item_id'), primary_key=True)
+ __tablename__ = "orderitem"
+ order_id = Column(Integer, ForeignKey("order.order_id"), primary_key=True)
+ item_id = Column(Integer, ForeignKey("item.item_id"), primary_key=True)
price = Column(Float, nullable=False)
def __init__(self, item, price=None):
self.item = item
self.price = price or item.price
- item = relationship(Item, lazy='joined')
+
+ item = relationship(Item, lazy="joined")
-if __name__ == '__main__':
- engine = create_engine('sqlite://')
+if __name__ == "__main__":
+ engine = create_engine("sqlite://")
Base.metadata.create_all(engine)
session = Session(engine)
# create catalog
tshirt, mug, hat, crowbar = (
- Item('SA T-Shirt', 10.99),
- Item('SA Mug', 6.50),
- Item('SA Hat', 8.99),
- Item('MySQL Crowbar', 16.99)
+ Item("SA T-Shirt", 10.99),
+ Item("SA Mug", 6.50),
+ Item("SA Hat", 8.99),
+ Item("MySQL Crowbar", 16.99),
)
session.add_all([tshirt, mug, hat, crowbar])
session.commit()
# create an order
- order = Order('john smith')
+ order = Order("john smith")
# add three OrderItem associations to the Order and save
order.order_items.append(OrderItem(mug))
@@ -88,13 +96,18 @@ if __name__ == '__main__':
session.commit()
# query the order, print items
- order = session.query(Order).filter_by(customer_name='john smith').one()
- print([(order_item.item.description, order_item.price)
- for order_item in order.order_items])
+ order = session.query(Order).filter_by(customer_name="john smith").one()
+ print(
+ [
+ (order_item.item.description, order_item.price)
+ for order_item in order.order_items
+ ]
+ )
# print customers who bought 'MySQL Crowbar' on sale
- q = session.query(Order).join('order_items', 'item')
- q = q.filter(and_(Item.description == 'MySQL Crowbar',
- Item.price > OrderItem.price))
+ q = session.query(Order).join("order_items", "item")
+ q = q.filter(
+ and_(Item.description == "MySQL Crowbar", Item.price > OrderItem.price)
+ )
print([order.customer_name for order in q])
diff --git a/examples/association/dict_of_sets_with_default.py b/examples/association/dict_of_sets_with_default.py
index fb9b6aa06..7f668c087 100644
--- a/examples/association/dict_of_sets_with_default.py
+++ b/examples/association/dict_of_sets_with_default.py
@@ -37,7 +37,9 @@ class A(Base):
__tablename__ = "a"
associations = relationship(
"B",
- collection_class=lambda: GenDefaultCollection(operator.attrgetter("key"))
+ collection_class=lambda: GenDefaultCollection(
+ operator.attrgetter("key")
+ ),
)
collections = association_proxy("associations", "values")
@@ -71,19 +73,15 @@ class C(Base):
self.value = value
-if __name__ == '__main__':
- engine = create_engine('sqlite://', echo=True)
+if __name__ == "__main__":
+ engine = create_engine("sqlite://", echo=True)
Base.metadata.create_all(engine)
session = Session(engine)
# only "A" is referenced explicitly. Using "collections",
# we deal with a dict of key/sets of integers directly.
- session.add_all([
- A(collections={
- "1": set([1, 2, 3]),
- })
- ])
+ session.add_all([A(collections={"1": set([1, 2, 3])})])
session.commit()
a1 = session.query(A).first()
diff --git a/examples/association/proxied_association.py b/examples/association/proxied_association.py
index 3393fdd1d..46785c6e2 100644
--- a/examples/association/proxied_association.py
+++ b/examples/association/proxied_association.py
@@ -7,8 +7,15 @@ to ``OrderItem`` optional.
from datetime import datetime
-from sqlalchemy import (create_engine, Column, Integer, String, DateTime,
- Float, ForeignKey)
+from sqlalchemy import (
+ create_engine,
+ Column,
+ Integer,
+ String,
+ DateTime,
+ Float,
+ ForeignKey,
+)
from sqlalchemy.orm import relationship, Session
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.ext.associationproxy import association_proxy
@@ -17,13 +24,14 @@ Base = declarative_base()
class Order(Base):
- __tablename__ = 'order'
+ __tablename__ = "order"
order_id = Column(Integer, primary_key=True)
customer_name = Column(String(30), nullable=False)
order_date = Column(DateTime, nullable=False, default=datetime.now())
- order_items = relationship("OrderItem", cascade="all, delete-orphan",
- backref='order')
+ order_items = relationship(
+ "OrderItem", cascade="all, delete-orphan", backref="order"
+ )
items = association_proxy("order_items", "item")
def __init__(self, customer_name):
@@ -31,7 +39,7 @@ class Order(Base):
class Item(Base):
- __tablename__ = 'item'
+ __tablename__ = "item"
item_id = Column(Integer, primary_key=True)
description = Column(String(30), nullable=False)
price = Column(Float, nullable=False)
@@ -41,39 +49,40 @@ class Item(Base):
self.price = price
def __repr__(self):
- return 'Item(%r, %r)' % (self.description, self.price)
+ return "Item(%r, %r)" % (self.description, self.price)
class OrderItem(Base):
- __tablename__ = 'orderitem'
- order_id = Column(Integer, ForeignKey('order.order_id'), primary_key=True)
- item_id = Column(Integer, ForeignKey('item.item_id'), primary_key=True)
+ __tablename__ = "orderitem"
+ order_id = Column(Integer, ForeignKey("order.order_id"), primary_key=True)
+ item_id = Column(Integer, ForeignKey("item.item_id"), primary_key=True)
price = Column(Float, nullable=False)
def __init__(self, item, price=None):
self.item = item
self.price = price or item.price
- item = relationship(Item, lazy='joined')
+
+ item = relationship(Item, lazy="joined")
-if __name__ == '__main__':
- engine = create_engine('sqlite://')
+if __name__ == "__main__":
+ engine = create_engine("sqlite://")
Base.metadata.create_all(engine)
session = Session(engine)
# create catalog
tshirt, mug, hat, crowbar = (
- Item('SA T-Shirt', 10.99),
- Item('SA Mug', 6.50),
- Item('SA Hat', 8.99),
- Item('MySQL Crowbar', 16.99)
+ Item("SA T-Shirt", 10.99),
+ Item("SA Mug", 6.50),
+ Item("SA Hat", 8.99),
+ Item("MySQL Crowbar", 16.99),
)
session.add_all([tshirt, mug, hat, crowbar])
session.commit()
# create an order
- order = Order('john smith')
+ order = Order("john smith")
# add items via the association proxy.
# the OrderItem is created automatically.
@@ -87,19 +96,24 @@ if __name__ == '__main__':
session.commit()
# query the order, print items
- order = session.query(Order).filter_by(customer_name='john smith').one()
+ order = session.query(Order).filter_by(customer_name="john smith").one()
# print items based on the OrderItem collection directly
- print([(assoc.item.description, assoc.price, assoc.item.price)
- for assoc in order.order_items])
+ print(
+ [
+ (assoc.item.description, assoc.price, assoc.item.price)
+ for assoc in order.order_items
+ ]
+ )
# print items based on the "proxied" items collection
- print([(item.description, item.price)
- for item in order.items])
+ print([(item.description, item.price) for item in order.items])
# print customers who bought 'MySQL Crowbar' on sale
- orders = session.query(Order).\
- join('order_items', 'item').\
- filter(Item.description == 'MySQL Crowbar').\
- filter(Item.price > OrderItem.price)
+ orders = (
+ session.query(Order)
+ .join("order_items", "item")
+ .filter(Item.description == "MySQL Crowbar")
+ .filter(Item.price > OrderItem.price)
+ )
print([o.customer_name for o in orders])