Max_Leb

Untitled

Jan 22nd, 2023
886
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.04 KB | None | 0 0
  1. from datetime import datetime
  2.  
  3. from sqlalchemy import create_engine, Column, Integer, String, ForeignKey, func
  4. from sqlalchemy.ext.declarative import declarative_base
  5. from sqlalchemy.orm import relationship, sessionmaker
  6.  
  7. engine = create_engine('sqlite:///sqlite3.db')
  8. engine.connect()
  9.  
  10.  
  11. Base = declarative_base()
  12.  
  13.  
  14. class Artist(Base):
  15.     __tablename__ = 'Artist'
  16.     artistid = Column(Integer(), primary_key=True)
  17.     name = Column(String(100))
  18.     Albums = relationship("Album")
  19.  
  20.  
  21. class Album(Base):
  22.     __tablename__ = 'Album'
  23.     albumid = Column(Integer(), primary_key=True)
  24.     title = Column(String(100))
  25.     artistid = Column(Integer, ForeignKey("Artist.artistid"))
  26.     Tracks = relationship("Track")
  27.  
  28.  
  29. class Genre(Base):
  30.     __tablename__ = 'Genre'
  31.     genreid = Column(Integer(), primary_key=True)
  32.     name = Column(String(100))
  33.     Tracks = relationship("Track")
  34.  
  35.  
  36. class MediaType(Base):
  37.     __tablename__ = 'MediaType'
  38.     mediatypeid = Column(Integer(), primary_key=True)
  39.     name = Column(String(100))
  40.     Tracks = relationship("Track")
  41.  
  42.  
  43. class Track(Base):
  44.     __tablename__ = 'Track'
  45.     trackid = Column(Integer(), primary_key=True)
  46.     name = Column(String(100))
  47.     albumid = Column(Integer, ForeignKey("Album.albumid"))
  48.     mediatypeid = Column(Integer, ForeignKey("MediaType.mediatypeid"))
  49.     genreid = Column(Integer, ForeignKey("Genre.genreid"))
  50.     composer = Column(String(100))
  51.     milliseconds = Column(Integer())
  52.     bytes = Column(Integer())
  53.     unitprice = Column(Integer())
  54.     PlaylistTracks = relationship("PlaylistTrack")
  55.  
  56.  
  57. class Playlist(Base):
  58.     __tablename__ = 'Playlist'
  59.     playlistid = Column(Integer(), primary_key=True)
  60.     name = Column(String(100))
  61.     PlaylistTracks = relationship("PlaylistTrack")
  62.  
  63.  
  64. class PlaylistTrack(Base):
  65.     __tablename__ = 'PlaylistTrack'
  66.     playlisttrackid = Column(Integer(), primary_key=True)
  67.     trackid = Column(Integer, ForeignKey("Track.trackid"))
  68.     playlistid = Column(Integer, ForeignKey("Playlist.playlistid"))
  69.  
  70.  
  71. Session = sessionmaker(bind=engine)
  72. session = Session()
  73.  
  74. Base.metadata.create_all(engine)
  75.  
  76. ar1 = Artist(name='Imagine Dragons')
  77. ar2 = Artist(name='Mick Jagger and Keith Richards')
  78. ar3 = Artist(name='Artik&Asti')
  79. ar4 = Artist(name='Zivert')
  80. ar5 = Artist(name='Кино')
  81. ar6 = Artist(name='Баста')
  82. ar7 = Artist(name='Би-2')
  83. ar8 = Artist(name='The Rolling Stones')
  84. ar9 = Artist(name='Red Hot Chili Peppers')
  85. ar10 = Artist(name='Король и Шут')
  86.  
  87. al1 = Album(title='Как в старой сказке', artistid=1)
  88. al2 = Album(title='Новогодняя песня', artistid=2)
  89. al3 = Album(title='Миллениум X', artistid=3)
  90. al4 = Album(title='Zima', artistid=4)
  91. al5 = Album(title='12_22', artistid=5)
  92. al6 = Album(title='Скандал', artistid=6)
  93. al7 = Album(title='Горизонт событий', artistid=7)
  94. al8 = Album(title='Aftermath', artistid=8)
  95. al9 = Album(title='Океан', artistid=9)
  96. al10 = Album(title='Night Visions', artistid=10)
  97. al11 = Album(title='Birds', artistid=10)
  98.  
  99. g1 = Genre(name='punk')
  100. g2 = Genre(name='Foreign rap')
  101. g3 = Genre(name='Foreign pop')
  102. g4 = Genre(name='alternative')
  103. g5 = Genre(name='Foreign rock')
  104. g6 = Genre(name='rap')
  105. g7 = Genre(name='rock')
  106. g8 = Genre(name='Russian stage')
  107. g9 = Genre(name='Stage')
  108. g10 = Genre(name='Russian rock')
  109.  
  110. mt1 = MediaType(name='mp3')
  111. mt2 = MediaType(name='aac')
  112. mt3 = MediaType(name='wav')
  113. mt4 = MediaType(name='flac')
  114. mt5 = MediaType(name='dsd')
  115.  
  116. t1 = Track(name='Bones', albumid=1, mediatypeid=5, genreid=10, composer='Дэн Рейнольдс', milliseconds=11123, bytes=12115, unitprice=111)
  117. t2 = Track(name='Paint it black', albumid=2, mediatypeid=2, genreid=5, composer='Mick Jagger', milliseconds=111111, bytes=87654, unitprice=10)
  118. t3 = Track(name='Гармония', albumid=3, mediatypeid=3, genreid=3, composer='Севиль', milliseconds=222222, bytes=11215, unitprice=25)
  119. t4 = Track(name='Wake up!', albumid=4, mediatypeid=4, genreid=4, composer='Zivert', milliseconds=333333, bytes=11251, unitprice=50)
  120. t5 = Track(name='Группа крови', albumid=5, mediatypeid=5, genreid=5, composer='Виктор Цой', milliseconds=123222, bytes=11512, unitprice=75)
  121. t6 = Track(name='Вечно молодой', albumid=6, mediatypeid=1, genreid=6, composer='Баста', milliseconds=984844, bytes=11521, unitprice=125)
  122. t7 = Track(name='Компромисс', albumid=7, mediatypeid=2, genreid=7, composer='Шура', milliseconds=32323, bytes=12511, unitprice=150)
  123. t8 = Track(name='Русская зима', albumid=7, mediatypeid=3, genreid=8, composer='Нина Бродская', milliseconds=444433, bytes=12151, unitprice=175)
  124. t9 = Track(name='Салют, Вера', albumid=7, mediatypeid=4, genreid=9, composer='Валерий Меладзе', milliseconds=44332, bytes=15211, unitprice=111)
  125. t10 = Track(name='Dreams', albumid=3, mediatypeid=5, genreid=10, composer='Дэн Рейнольдс', milliseconds=22233, bytes=10000, unitprice=175)
  126. t11 = Track(name='Кукла колдуна', albumid=1, mediatypeid=1, genreid=1, composer='Михаил Горшенёв', milliseconds=12345, bytes=98765, unitprice=111)
  127.  
  128.  
  129. pl1 = Playlist(name='Songs for Soul')
  130. pl2 = Playlist(name='Relax Songs')
  131. pl3 = Playlist(name='Songs for Montage')
  132. pl4 = Playlist(name='Rock Songs')
  133. pl5 = Playlist(name='Pop Songs')
  134.  
  135. plt1 = PlaylistTrack(trackid=1, playlistid=1)
  136. plt2 = PlaylistTrack(trackid=5, playlistid=1)
  137. plt3 = PlaylistTrack(trackid=8, playlistid=1)
  138. plt4 = PlaylistTrack(trackid=3, playlistid=2)
  139. plt5 = PlaylistTrack(trackid=7, playlistid=2)
  140. plt6 = PlaylistTrack(trackid=9, playlistid=2)
  141. plt7 = PlaylistTrack(trackid=10, playlistid=3)
  142. plt8 = PlaylistTrack(trackid=1, playlistid=4)
  143. plt9 = PlaylistTrack(trackid=10, playlistid=4)
  144. plt10 = PlaylistTrack(trackid=1, playlistid=5)
  145. plt11 = PlaylistTrack(trackid=2, playlistid=5)
  146. plt12 = PlaylistTrack(trackid=3, playlistid=5)
  147. plt13 = PlaylistTrack(trackid=5, playlistid=5)
  148. plt14 = PlaylistTrack(trackid=6, playlistid=5)
  149. plt15 = PlaylistTrack(trackid=8, playlistid=5)
  150. plt16 = PlaylistTrack(trackid=9, playlistid=5)
  151.  
  152. session.add_all([ar1, ar2, ar3, ar4, ar5, ar6, ar7, ar8, ar9, ar10,
  153.                  al1, al2, al3, al4, al5, al6, al7, al8, al9, al10,
  154.                  g1, g2, g3, g4, g5, g6, g7, g8, g9, g10,
  155.                  mt1, mt2, mt3, mt4, mt5,
  156.                  t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11,
  157.                  pl1, pl2, pl3, pl4, pl5,
  158.                  plt1, plt2, plt3, plt4, plt5, plt6, plt7, plt8, plt9, plt10, plt11, plt12, plt13, plt14, plt15, plt16])
  159.  
  160. session.commit()
  161.  
  162. print('Задание №1')
  163. print(*session.query(Track.name, Artist.name, Track.milliseconds).
  164.       join(Album, Track.albumid == Album.albumid).
  165.       join(Artist, Artist.artistid == Album.artistid).
  166.       order_by(Track.name).all(), sep='\n')
  167. print('\n')
  168.  
  169.  
  170. print('Задание №2')
  171. print(session.query(Track).count())
  172. print('\n')
  173.  
  174.  
  175. print('Задание №3')
  176. print(*session.query(Album.__table__).limit(10).all(), sep='\n')
  177. print('\n')
  178.  
  179.  
  180. print('Задание №4')
  181. print(*session.query(Genre.__table__).filter(Genre.name.like("%Foreign%")).all(), sep='\n')
  182. print('\n')
  183.  
  184.  
  185. print('Задание №5')
  186. print(*session.query(Album.title, Artist.name, func.sum(Track.bytes), func.sum(Track.unitprice)).
  187.       join(Track, Track.albumid == Album.albumid).
  188.       join(Artist, Album.artistid == Artist.artistid).
  189.       group_by(Album.title).having(func.count('*') > 0).all(), sep='\n')
  190. print('\n')
  191.  
  192.  
  193. print('Задание №6')
  194. print(session.query(Artist.__table__).
  195.       join(Album, Album.artistid == Artist.artistid).
  196.       join(Track, Track.albumid == Album.albumid).
  197.       join(PlaylistTrack, PlaylistTrack.trackid == Track.trackid).distinct().count())
  198. print('\n')
  199.  
  200.  
  201. print('Задание №7')
  202. print(session.query(Artist.__table__).
  203.       join(Album, Album.artistid == Artist.artistid).
  204.       join(Track, Track.albumid == Album.albumid).
  205.       join(PlaylistTrack, PlaylistTrack.trackid == Track.trackid).
  206.       where(PlaylistTrack.playlistid == 5).distinct().count())
  207.  
Advertisement
Add Comment
Please, Sign In to add comment