Guest User

Untitled

a guest
Feb 8th, 2018
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.72 KB | None | 0 0
  1. 1)
  2.  
  3. from sqlalchemy import create_engine
  4.  
  5. engine = create_engine("sqlite:///some.db")
  6.  
  7. #создаем таблицу
  8. engine.execute("""CREATE TABLE employee (
  9. emp_id integer primary key,
  10. emp_name varchar(30)
  11. )""")
  12.  
  13. #Вставляем строку с emp_name = 'dilbert'
  14. engine.execute("""INSERT into employee(emp_name) values ('dilbert')""")
  15.  
  16. #выбираем все строки и столбцы таблицы
  17. result = engine.execute("SELECT * from employee")
  18.  
  19. #выводим
  20. print(result.fetchall())
  21.  
  22. Результат: [(1, 'dilbert')]
  23. _________________________________________________________
  24. 2)
  25.  
  26. __13/20__
  27.  
  28. from sqlalchemy import create_engine
  29. from sqlalchemy import MetaData
  30. from sqlalchemy import Table, Column
  31. from sqlalchemy import Integer, String, DateTime, ForeignKey
  32.  
  33. engine = create_engine("sqlite:///some.db")
  34.  
  35. metadata = MetaData()
  36.  
  37. #таблицы
  38. network_table = Table('network', metadata,
  39. Column('network_id', Integer, primary_key=True),
  40. Column('name', String(100), nullable=False),
  41. Column('created_at', DateTime, nullable=False),
  42. Column('owner_id', ForeignKey('user.id'))
  43. )
  44.  
  45. user_table = Table('user', metadata,
  46. Column('id', Integer, primary_key=True),
  47. Column('name', String(30), nullable=False),
  48. Column('fullname', String(100), nullable=False)
  49. )
  50. metadata.create_all(engine)
  51.  
  52. __20/20__
  53. from sqlalchemy import create_engine
  54. from sqlalchemy import MetaData
  55. from sqlalchemy import Table, Column
  56. from sqlalchemy import Integer, String, DateTime, ForeignKey
  57.  
  58. engine = create_engine("sqlite:///some.db")
  59.  
  60. metadata = MetaData()
  61.  
  62. #таблицы
  63. network_table = Table('network', metadata,
  64. Column('network_id', Integer, primary_key=True),
  65. Column('name', String(100), nullable=False),
  66. Column('created_at', DateTime, nullable=False),
  67. Column('owner_id', ForeignKey('user.id'))
  68. )
  69.  
  70. user_table = Table('user', metadata,
  71. Column('id', Integer, primary_key=True),
  72. Column('name', String(30), nullable=False),
  73. Column('fullname', String(100), nullable=False)
  74. )
  75.  
  76. metadata.create_all(engine)
  77.  
  78. from sqlalchemy import inspect
  79.  
  80. metadata2 = MetaData()
  81. network_reflected = Table('network', metadata2, autoload=True, autoload_with=engine)
  82. print(network_reflected.c)
  83.  
  84. inspector = inspect(engine)
  85.  
  86. #таблицы с колонкой story_id
  87. print("Tables with story_id:")
  88. for mytables in inspector.get_table_names():
  89. for column in inspector.get_columns(mytables):
  90. if column ['name'] == 'story_id':
  91. print (mytables)
  92.  
  93. Результат:
  94. ['network.network_id', 'network.name', 'network.created_at', 'network.owner_id']
  95. Tables with story_id
  96. _________________________________________________________
  97. 3)
  98. from sqlalchemy import create_engine
  99. from sqlalchemy import MetaData
  100. from sqlalchemy import Table, Column
  101. from sqlalchemy import Integer, String, ForeignKey
  102. from sqlalchemy import select
  103. from sqlalchemy import func
  104.  
  105. metaData = MetaData()
  106. engine = create_engine("sqlite:///some.db")
  107.  
  108. user_table = Table('user', metaData,
  109. Column('id', Integer, primary_key=True),
  110. Column('username', String(50)),
  111. Column('fullname', String(50))
  112. )
  113. metaData.create_all(engine)
  114.  
  115. # __18/46__
  116. print(user_table.c.fullname == 'ed')
  117. print((user_table.c.fullname == 'ed') & (user_table.c.id > 5))
  118. print((user_table.c.username == 'edward') | ((user_table.c.fullname == 'ed') & (user_table.c.id > 5)))
  119. Результат:
  120. "user".fullname = :fullname_1
  121. "user".fullname = :fullname_1 AND "user".id > :id_1
  122. "user".username = :username_1 OR "user".fullname = :fullname_1 AND "user".id > :id_1
  123.  
  124. #__27/46__
  125. data = user_table.insert().values(username='dilbert', fullname='Dilbert Jones')
  126. connection = engine.connect()
  127. result = connection.execute(data)
  128. print(result)
  129. connection.close()
  130.  
  131. select_data=select([user_table.c.id, user_table.c.username, user_table.c.fullname]).\
  132. where((user_table.c.username == 'wendy')|(user_table.c.username == 'dilbert')).\
  133. order_by(user_table.c.fullname)
  134.  
  135. result=engine.execute(select_data)
  136. print(result.fetchall())
  137. Результат:
  138. [(1, 'dilbert', 'Dilbert Jones')]
  139.  
  140. #__38/46__
  141. address_table = Table("address", metaData,
  142. Column('id', Integer, primary_key=True),
  143. Column('user_id', Integer, ForeignKey('user.id'), nullable=False),
  144. Column('email_address', String(100), nullable=False)
  145. )
  146. metaData.create_all(engine)
  147.  
  148. engine.execute(user_table.insert().values(username='ed', fullname='Ed Jones'))
  149. engine.execute(address_table.insert().values(user_id='1', email_address='ed@ed.com'))
  150. engine.execute(address_table.insert().values(user_id='1', email_address='ed@gmail.com'))
  151. engine.execute(address_table.insert().values(user_id='2', email_address='jack@yahoo.com'))
  152. engine.execute(address_table.insert().values(user_id='3', email_address='wendy@gmail.com'))
  153.  
  154. selected_data=select([user_table.c.fullname, address_table.c.email_address]).select_from(user_table.join(address_table)).\
  155. where(user_table.c.username == 'ed').order_by(address_table.c.email_address)
  156. result=engine.execute(selected_data)
  157. print(result.fetchall())
  158. Результат: [('Ed Jones', 'ed@ed.com'), ('Ed Jones', 'ed@gmail.com')]
  159.  
  160. #__46/46__
  161. result=engine.execute(user_table.update().values(fullname="Ed Jones").where(user_table.c.username == "ed"))
  162. select_address = select([address_table.c.email_address]).\
  163. where(user_table.c.id == address_table.c.user_id)
  164.  
  165. result =select([user_table.c.username, select_address.as_scalar().where(user_table.c.username.in_(['jack', 'wendy']))])
  166. print(engine.execute(result).fetchall())
  167. Обновили 1 колонку.
  168. Результат: [('ed', None)]
  169. _________________________________________________________
  170. 4)
  171. from sqlalchemy import create_engine, func, select
  172. from sqlalchemy import MetaData,Column, Integer, String, Numeric, ForeignKey
  173. from sqlalchemy.orm import Session, relationship
  174. from sqlalchemy.ext.declarative import declarative_base
  175. from sqlalchemy.orm import aliased
  176.  
  177. metaData = MetaData()
  178. engine = create_engine("sqlite:///some.db")
  179. base = declarative_base()
  180.  
  181. class Network(base):
  182. __tablename__ = 'network'
  183. network_id = Column(Integer, primary_key=True)
  184. name = Column(String(100), nullable=False)
  185. def __repr__(self):
  186. return "<Network(%r)>" % (self.name)
  187.  
  188. class User(base):
  189. __tablename__ = 'user'
  190. id = Column(Integer, primary_key=True)
  191. name = Column(String)
  192. fullname = Column(String)
  193. def __repr__(self):
  194. return "<User(%r, %r)>" % (self.name, self.fullname)
  195.  
  196. class Address(base):
  197. __tablename__ = 'address'
  198. id = Column(Integer, primary_key=True)
  199. email_address = Column(String, nullable=False)
  200. user_id = Column(Integer, ForeignKey('user.id'))
  201. user = relationship("User", backref="addresses")
  202. def __repr__(self):
  203. return "<Address(%r)>" % self.email_address
  204.  
  205. class Account(base):
  206. __tablename__ = 'account'
  207. id = Column(Integer, primary_key=True)
  208. owner = Column(String(50), nullable = False)
  209. balance = Column(Numeric, default=0)
  210. def __repr__(self):
  211. return "<Account(%r, %r)>" % (self.owner, self.balance)
  212.  
  213. class Transaction(base):
  214. __tablename__ = 'transaction'
  215. id = Column(Integer, primary_key=True)
  216. amount = Column(Numeric, nullable=False)
  217. account_id = Column(Integer, ForeignKey(Account.__tablename__ + '.id'), nullable=False)
  218. account = relationship('Account', backref="transactions")
  219. def __repr__(self):
  220. return "Transaction: %r" % (self.amount)
  221.  
  222.  
  223. base.metadata.create_all(engine)
  224. #__25/72__
  225. session = Session(bind=engine)
  226. session.add_all([Network(name='net1'), Network(name='net2')])
  227. session.commit()
  228.  
  229. #__43/72__
  230. session.add_all([
  231. User(name='ed', fullname='Ed Jones'),
  232. User(name='wendy', fullname='Wendy Weathersmith'),
  233. User(name='mary', fullname='Mary Contrary'),
  234. User(name='fred', fullname='Fred Flinstone')
  235. ])
  236. session.commit()
  237.  
  238. query = session.query(User.fullname).order_by(User.fullname)
  239. print(query.all())
  240.  
  241. query = query.filter(User.name.in_(['mary','ed']))
  242. print(query.all())
  243.  
  244. Результат:
  245. [('Ed Jones',), ('Fred Flinstone',), ('Mary Contrary',), ('Wendy Weathersmith',)]
  246. [('Ed Jones',), ('Mary Contrary',)]
  247. ('Mary Contrary',)
  248. print(query[1])
  249.  
  250. #__62/72__
  251. jack = User(name='jack', fullname='Jack Bean')
  252. jack.addresses = [Address(email_address='jack@gmail.com'),
  253. Address(email_address='j25@yahoo.com'),
  254. Address(email_address='jack@hotmail.com')]
  255. session.add(jack)
  256. session.commit()
  257. query = session.query(User.name, Address.email_address).join(Address).filter(Address.email_address=="j25@yahoo.com")
  258. print (query.all())
  259.  
  260. user1 = aliased(User)
  261. user2 = aliased(User)
  262.  
  263. query=engine.execute(select([user1.name, user2.name]).distinct().where(user1.name < user2.name))
  264. print(query.fetchall())
  265.  
  266. Результат:
  267. [('jack', 'j25@yahoo.com')]
  268. [('ed', 'wendy'), ('ed', 'mary'), ('ed', 'fred'), ('ed', 'jack'), ('mary', 'wendy'), ('fred', 'wendy'), ('fred', 'mary'), ('fred', 'jack'), ('jack', 'wendy'), ('jack', 'mary')]
  269.  
  270. #__72/72__
  271. a1=Account(owner = "Jack Jones", balance = 5000)
  272. a2=Account(owner="Ed Rendell", balance=10000)
  273. session.add_all([
  274. Transaction(amount=500, account=a1),
  275. Transaction(amount=4500, account=a1),
  276. Transaction(amount=6000, account=a2),
  277. Transaction(amount=4000, account=a2),
  278. a1,
  279. a2,
  280. ])
  281. session.commit()
  282.  
  283.  
  284. for account in session.query(Account).all():
  285. print(account.owner)
  286. print(account.balance)
  287. print(func.sum(Transaction.amount).label('summed')
  288. ).select_from(Account).join(Transaction.account).all())
Add Comment
Please, Sign In to add comment