Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.25 KB | None | 0 0
  1. from sqlalchemy.ext.declarative import declarative_base
  2. from sqlalchemy import create_engine, Column, Integer, String, Table
  3. from sqlalchemy.orm import sessionmaker
  4.  
  5. Base = declarative_base()
  6.  
  7.  
  8. class Emails(Base):
  9.     __tablename__ = 'Emails'
  10.  
  11.     id = Column(Integer, primary_key=True)
  12.     owner_id = Column(Integer)
  13.     email = Column(String)
  14.  
  15.     def __repr__(self):
  16.         return "<Emails(owner_id='%s', email='%s')>" % (
  17.             self.owner_id, self.email)
  18.  
  19.  
  20. class PhoneNumbers(Base):
  21.     __tablename__ = 'PhoneNumbers'
  22.  
  23.     id = Column(Integer, primary_key=True)
  24.     owner_id = Column(Integer)
  25.     number = Column(Integer)
  26.  
  27.     def __repr__(self):
  28.         return "<PhoneNumbers(owner_id='%s', number='%s')>" % (
  29.             self.owner_id, self.number)
  30.  
  31.  
  32. class Addresses(Base):
  33.     __tablename__ = 'Addresses'
  34.  
  35.     id = Column(Integer, primary_key=True)
  36.     city_name = Column(String)
  37.     street_name = Column(String)
  38.     postal_code = Column(String)
  39.  
  40.     def __repr__(self):
  41.         return "<Addresses(city_name='%s', street='%s', postal_code='%s')>" % (
  42.             self.city_name, self.street_name, self.postal_code)
  43.  
  44.  
  45. class People(Base):
  46.     __tablename__ = 'People'
  47.  
  48.     id = Column(Integer, primary_key=True)
  49.     name = Column(String)
  50.     surname = Column(String)
  51.     address = Column(Integer)
  52.     person_id = Column(Integer)  # id osoby
  53.  
  54.     def __repr__(self):
  55.         return "<People(id='%s', name='%s', surname='%s', address='%s', person_id='%s')>" % (
  56.             self.id, self.name, self.surname, self.address,self.person_id)
  57.  
  58.  
  59. def add_person(imie: str = None, nazwisko: str = None, address_obj: Addresses = None,
  60.                phone_numbers_list: list = None, emails_list: list = None, lista_osob: int = None):
  61.     session = Session()
  62.  
  63.     session.add(address_obj)
  64.     session.commit()
  65.     adres = session.query(Addresses).filter_by(city_name=address_obj.city_name, street_name=address_obj.street_name,
  66.                                                postal_code=address_obj.postal_code).first()
  67.     session.commit()
  68.  
  69.     person = People(name=imie, surname=nazwisko, address=adres.id, person_id=lista_osob)
  70.     session.add(person)
  71.     session.commit()
  72.  
  73.     for email in emails_list:
  74.         session.add(Emails(owner_id=person.id, email=email))
  75.     for number in phone_numbers_list:
  76.         session.add(PhoneNumbers(owner_id=person.id, number=number))
  77.  
  78.     session.commit()
  79.  
  80.     session.close()
  81.  
  82.  
  83. def find_person(imie: str = None, nazwisko: str = None):
  84.     session = Session()
  85.  
  86.     person = session.query(People).filter_by(name=imie, surname=nazwisko).first()
  87.     phone_numbers = session.query(PhoneNumbers).filter_by(owner_id=person.id).all()
  88.     emails = session.query(Emails).filter_by(owner_id=person.id).all()
  89.  
  90.     print(person)
  91.     print(phone_numbers)
  92.     print(emails)
  93.  
  94.     session.close()
  95.  
  96.  
  97. engine = create_engine("sqlite:///people.db")
  98. Base.metadata.create_all(engine)
  99.  
  100. Session = sessionmaker(bind=engine)
  101.  
  102. # address = Addresses(city_name="Beka", street_name="Fajna", postal_code="13-337")
  103. # add_person(imie="jozef", nazwisko="ziomal", address_obj=address, phone_numbers_list=[222, 444, 555], emails_list=["bbbbba@gmail.pl", "gmail@hotmail.com"], lista_osob=10)
  104. find_person("jozef", "ziomal")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement