Guest User

Untitled

a guest
Jan 23rd, 2018
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.10 KB | None | 0 0
  1. Задание 1:
  2. ```
  3. from sqlalchemy import create_engine
  4. import os
  5. eng = create_engine("sqlite:///some.db")
  6. e.execute("""create table employee (emp_id integer primary key,emp_name varchar)""")
  7. e.execute("insert into employee (emp_id, emp_name) values (1,'dilbert')
  8. r = eng.execute("select * from employee")
  9. print(r)
  10. ```
  11. Задание 2:
  12. ```
  13. from sqlalchemy import String, Integer, DateTime, ForeignKey
  14. from sqlalchemy import inspect
  15. eng = create_engine("sqlite:///some.db")
  16. metadata = MetaData()
  17. net_table = Table('network', metadata,
  18. Column('network_id', Integer, primary_key=True),
  19. Column('name', String, nullable=False),
  20. Column('created_at', DateTime, nullable=False),
  21. Column('owner_id', Integer, ForeignKey('user.id'))
  22. )
  23. user_table = Table('user', metaData,
  24. Column('id', Integer, primary_key=True),
  25. Column('name', String),
  26. Column('fullname', String)
  27. )
  28. metadata.create_all(eng)
  29. metadata2 = MetaData()
  30. reflected = Table('user', metadata2, autoload=True, autoload_with=eng)
  31. inspector = inspect(eng)
  32. inspector.get_columns('network')
  33.  
  34. for inspect_table in inspector.get_table_names():
  35. for inspect_column in inspector.get_columns(inspect_table):
  36. if inspect_column ['name'] == 'story_id':
  37. print (inspect_table)
  38. ```
  39. Задание 3:
  40. ```
  41. from sqlalchemy import String, Integer, DateTime, ForeignKey
  42. from sqlalchemy import inspect
  43. from sqlalchemy import select
  44. from sqlalchemy import create_engine
  45. from sqlalchemy.orm import aliased
  46. eng= create_engine("sqlite:///some.db")
  47. metaData = MetaData()
  48. user_table = Table('user', metaData,
  49. Column('id', Integer, primary_key=True),
  50. Column('username', String(50)),
  51. Column('fullname', String(50))
  52. )
  53. metaData1.create_all(eng)
  54. print(user_table.c.username == 'ed')
  55. print(and_(user_table.c.fullname == 'ed',user_table.c.id > 5))
  56. print(or_(user_table.c.username == 'ed',and_(user_table.c.fullname == 'ed',user_table.c.id > 5)))
  57. add = user_table.insert().values(username='dilbert', fullname='Dilbert Jones')
  58. connection = engine.connect()
  59. r = connection.execute(add)
  60. print(r)
  61.  
  62. sel = select([user_table.c.username, user_table.c.fullname]).\
  63. where(
  64. or_(user_table.c.username == 'wendy',user_table.c.username == 'dilbert')
  65. ).\
  66. order_by(user_table.c.fullname)
  67. print(connection.execute(sel)
  68. addr_table = Table("address", metadata,
  69. Column('id', Integer, primary_key=True),
  70. Column('user_id', Integer, ForeignKey('user.id'), nullable=False),
  71. Column('email_address', String(100), nullable=False)
  72. )
  73. metadata.create_all(engine)
  74. conn.execute(addr_table.insert(), [
  75. {"user_id": 1, "email_address": "ed@ed.com"},
  76. {"user_id": 1, "email_address": "ed@gmail.com"},
  77. {"user_id": 2, "email_address": "jack@yahoo.com"},
  78. {"user_id": 3, "email_address": "wendy@gmail.com"},
  79. ])
  80. text = select([user_table.c.fullname, addr_table.c.email_address]).\
  81. select_from(user_table.join(addr_table)).\
  82. where(user_table.c.username=='ed').\
  83. order_by(addr_table.c.email_address)
  84. print(text)
  85. result = user_table.update().values(fullname="Ed Jones").where(user_table.c.username == 'ed')
  86. print(result)
  87. ```
  88. Задание 4:
  89. ```
  90. from sqlalchemy import Column, Integer, String, Numeric, func,ForeignKey
  91. from sqlalchemy.ext.declarative import declarative_base
  92. from sqlalchemy.orm import Session,relationship
  93. from sqlalchemy import create_engine
  94.  
  95. mybase = declarative_base()
  96. eng = create_engine("sqlite:///some.db")
  97. connection=eng.connect()
  98. class Network(mybase):
  99. __tablename__ = 'network'
  100. network_id = Column(Integer, primary_key=True)
  101. name = Column(String(100), nullable = False)
  102. def __repr__(self):
  103. return "<Network(%r, %r)>" % (self.name)
  104. class User(mybase):
  105. __tablename__ = 'user'
  106. id = Column(Integer, primary_key=True)
  107. name = Column(String)
  108. fullname = Column(String)
  109. def __repr__(self):
  110. return "<User(%r, %r)>" % (self.name, self.fullname)
  111. class Address(mybase):
  112. __tablename__ = 'address'
  113. id = Column(Integer, primary_key=True)
  114. email_address = Column(String, nullable=False)
  115. user_id = Column(Integer, ForeignKey('user.id'))
  116. user = relationship("User", backref="addresses")
  117. def __repr__(self):
  118. return "<Address(%r)>" % self.email_address
  119. class Account(mybase):
  120. __tablename__ = 'account'
  121. id = Column(Integer, primary_key=True)
  122. owner = Column(String(50), nullable = False)
  123. balance = Column(Numeric, default=0)
  124. def __repr__(self):
  125. return "<Account(%r, %r)>" % (self.owner, self.balance)
  126. class Transaction(myBase):
  127. __tablename__ = 'transaction'
  128. id = Column(Integer, primary_key=True)
  129. amount = Column(Numeric, nullable=False)
  130. account_id = Column(Integer, ForeignKey(Account.__tablename__ + '.id'), nullable=False)
  131. account = relationship('Account', backref="transactions")
  132. def __repr__(self):
  133. return "Transaction: %r" % (self.amount)
  134. mybase.metadata.create_all(eng)
  135. session = Session(bind=eng)
  136. session.add(Network(name = 'net1'))
  137. session.add(Network(name = 'net2'))
  138. session.commit()
  139. print(eng.execute("select * from network")
  140. session1 = Session(bind=eng)
  141. session1.add_all([
  142. User(name='wendy', fullname='Wendy Weathersmith'),
  143. User(name='mary', fullname='Mary Contrary'),
  144. User(name='fred', fullname='Fred Flinstone')
  145. ])
  146. session1.commit()
  147. q1 = session1.query(User).order_by(User.fullname)
  148. print(q1)
  149. q2 = q1.filter(User.name.in_(['mary','ed']))
  150. print(q2)
  151. session2=Session(bind = eng)
  152. acc1=Account(owner = "Jack Jones", balance = 5000)
  153. acc2=Account(owner="Ed Rendell", balance=10000)
  154. session3.add_all([
  155. acc1,
  156. acc2,
  157. Transaction(amount=500, account=acc1),
  158. Transaction(amount=4500, account=acc1),
  159. Transaction(amount=6000, account=acc2),
  160. Transaction(amount=4000, account=acc2)])
  161. for account in session2.query(Account).all():
  162. print(account.owner)
  163. print(account.balance)
  164. m = 0
  165. for at in account.transactions:
  166. m += at.amount
  167. print(m)
  168. ```
Add Comment
Please, Sign In to add comment