Guest User

Untitled

a guest
Dec 11th, 2017
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.80 KB | None | 0 0
  1. //Создание таблицы employee
  2. //Заполнение одной строки значением dilbert
  3. //Вывод одной строки таблицы
  4.  
  5. Запрос 1:
  6.  
  7. from sqlalchemy import create_engine
  8. import os
  9.  
  10. if os.path.exists("some.db"):
  11. os.remove("some.db")
  12. l = create_engine("sqlite:///some.db")
  13. l.execute("""
  14. create table employee (
  15. emp_id integer primary key,
  16. emp_name varchar(30)
  17. )
  18. """)
  19.  
  20. l.execute("""insert into employee(emp_name) values ('dilbert')""")
  21.  
  22. result = l.execute("select * from employee")
  23. for row in result:
  24. print(row)
  25.  
  26. Ответ:
  27. (1, u'dilbert')
  28.  
  29. //Создание таблицы user и network
  30. //Вывод на экран названия столбцов таблицы network
  31. //При помощи inspect вывести на экран названия столбцов таблицы user
  32. //При помощи inspect вывести на экран стобцы, содержащие поле story_id (т.к. таких не существует, то вывели пустое поле)
  33.  
  34. Запрос 2:
  35.  
  36. from sqlalchemy import MetaData
  37. from sqlalchemy import Table, Column
  38. from sqlalchemy import Integer, String, DateTime
  39. from sqlalchemy import create_engine
  40. from sqlalchemy import inspect
  41. from sqlalchemy import ForeignKey
  42.  
  43. metadata = MetaData()
  44. user_table = Table('user', metadata,
  45. Column('id', Integer, primary_key=True),
  46. Column('name', String),
  47. Column('fullname', String)
  48. )
  49.  
  50. metadata2 = MetaData()
  51. net_table = Table('network', metadata2,
  52. Column('net_id', Integer, primary_key=True),
  53. Column('name', String(100), nullable=False),
  54. Column('create_at', DateTime, nullable=False),
  55. Column('owner_id', Integer, ForeignKey('user.id'))
  56. )
  57.  
  58. move = create_engine("sqlite:///some.db")
  59. print(metadata.create_all(move))
  60.  
  61. net_reflected=Table('network', metadata2, autoload=True, autoload_with=move)
  62. print(net_reflected.c)
  63.  
  64. inspector=inspect(move)
  65. print(inspector.get_table_names())
  66. print(inspector.get_columns('story_id'))
  67.  
  68. Ответ:
  69. None
  70. ['network.net_id', 'network.name', 'network.create_at', 'network.owner_id']
  71. [u'employee', u'user']
  72. []
  73.  
  74. //Создание таблицы user
  75. //Поиск в таблице строки с необходимыми нам значениями
  76.  
  77. Запрос 3:
  78.  
  79. from sqlalchemy import MetaData, Table, Column, String, Integer
  80. from sqlalchemy import create_engine
  81. #from sqlalchemy
  82.  
  83. metadata = MetaData()
  84. user_table = Table('user', metadata,
  85. Column('id', Integer, primary_key=True),
  86. Column('username', String(50)),
  87. Column('fullname', String(50))
  88. )
  89.  
  90.  
  91. move = create_engine("sqlite:///some.db")
  92. metadata.create_all(move)
  93.  
  94. str(user_table.c.fullname == 'ed')
  95. print(user_table.c.fullname == 'ed')
  96.  
  97. str((user_table.c.fullname == 'ed') & (user_table.c.id>5))
  98. print((user_table.c.fullname == 'ed') & (user_table.c.id>5))
  99.  
  100. str((user_table.c.username == 'edward') | ((user_table.c.fullname == 'ed') & (user_table.c.id > 5)))
  101. print((user_table.c.username == 'edward') | ((user_table.c.fullname == 'ed') & (user_table.c.id > 5)))
  102.  
  103. Ответ:
  104. "user".fullname = :fullname_1
  105. "user".fullname = :fullname_1 AND "user".id > :id_1
  106. "user".username = :username_1 OR "user".fullname = :fullname_1 AND "user".id > :id_1
  107.  
  108.  
  109. //Создание таблицу user
  110. //При помощи insert делаем добавление в таблицу строку
  111. //При помощи select выбираем нужные строки из таблицы
  112.  
  113. Запрос 4:
  114.  
  115. from sqlalchemy import MetaData, Table, Column, String, Integer
  116. from sqlalchemy import create_engine
  117. from sqlalchemy import select
  118. from sqlalchemy import and_, or_
  119.  
  120.  
  121. metadata = MetaData()
  122. user_table = Table('user', metadata,
  123. Column('id', Integer, primary_key=True),
  124. Column('username', String(50)),
  125. Column('fullname', String(50))
  126. )
  127.  
  128.  
  129. move = create_engine("sqlite://")
  130. metadata.create_all(move)
  131.  
  132. insert_s = user_table.insert().values(username='dilbert', fullname='Dilbert Jones')
  133.  
  134. conn = move.connect()
  135. result = conn.execute(insert_s)
  136. print(result)
  137. print(result.inserted_primary_key)
  138.  
  139.  
  140. select_s = select([user_table.c.username, user_table.c.fullname]).\
  141. where(
  142. or_(
  143. user_table.c.username == 'wendy',
  144. user_table.c.username == 'dilbert'
  145. )
  146. ).\
  147. order_by(user_table.c.fullname)
  148. answ = conn.execute(select_s)
  149. for row in answ:
  150. print(row)
  151.  
  152. Ответ:
  153. <sqlalchemy.engine.result.ResultProxy object at 0xb6b0f6ec>
  154. [1]
  155. (u'dilbert', u'Dilbert Jones')
  156.  
  157.  
  158. //Создание таблиц user и address
  159. //При помощи join делаем объединение их разными методами(условия - where, группировка - order_by)
  160.  
  161. Запрос 5:
  162.  
  163. from sqlalchemy import MetaData, Table, Column, String, Integer
  164. from sqlalchemy import create_engine
  165. from sqlalchemy import select
  166. from sqlalchemy import and_, or_
  167. from sqlalchemy import ForeignKey
  168.  
  169.  
  170. metadata = MetaData()
  171. user_table = Table('user', metadata,
  172. Column('id', Integer, primary_key=True),
  173. Column('username', String(50)),
  174. Column('fullname', String(50))
  175. )
  176.  
  177. address_table = Table("address", metadata,
  178. Column('id', Integer, primary_key=True),
  179. Column('user_id', Integer, ForeignKey('user.id'),
  180. nullable=False),
  181. Column('email_address', String(100), nullable=False)
  182. )
  183.  
  184. move = create_engine("sqlite://")
  185. metadata.create_all(move)
  186.  
  187. conn = move.connect()
  188. conn.execute(address_table.insert(), [
  189. {"user_id": 1, "email_address": "ed@ed.com"},
  190. {"user_id": 1, "email_address": "ed@gmail.com"},
  191. {"user_id": 2, "email_address": "jack@yahoo.com"},
  192. {"user_id": 3, "email_address": "wendy@gmail.com"},
  193. ])
  194.  
  195.  
  196. join_obj = user_table.join(address_table,
  197. user_table.c.id == address_table.c.user_id)
  198. print(join_obj)
  199.  
  200. select_stmt = select([user_table, address_table]).select_from(join_obj).\
  201. where(user_table.c.username == 'ed').\
  202. order_by(address_table.c.email_address)
  203.  
  204. answ=conn.execute(select_stmt)
  205. print(answ)
  206.  
  207. Ответ:
  208. "user" JOIN address ON "user".id = address.user_id
  209. <sqlalchemy.engine.result.ResultProxy object at 0xb6b57e6c>
  210.  
  211.  
  212. //Создание таблиц user и address
  213. //Заполнение таблицы address данными
  214. //Обновление данных в таблице при помощи update
  215.  
  216. Запрос 6:
  217.  
  218. from sqlalchemy import MetaData, Table, Column, String, Integer
  219. from sqlalchemy import create_engine
  220. from sqlalchemy import select
  221. from sqlalchemy import and_, or_
  222. from sqlalchemy import ForeignKey
  223.  
  224. metadata = MetaData()
  225. user_table = Table('user', metadata,
  226. Column('id', Integer, primary_key=True),
  227. Column('username', String(50)),
  228. Column('fullname', String(50))
  229. )
  230.  
  231. address_table = Table("address", metadata,
  232. Column('id', Integer, primary_key=True),
  233. Column('user_id', Integer, ForeignKey('user.id'),
  234. nullable=False),
  235. Column('email_address', String(100), nullable=False)
  236. )
  237.  
  238. move = create_engine("sqlite://")
  239. metadata.create_all(move)
  240.  
  241. conn = move.connect()
  242. conn.execute(address_table.insert(), [
  243. {"user_id": 1, "email_address": "ed@ed.com"},
  244. {"user_id": 1, "email_address": "ed@gmail.com"},
  245. {"user_id": 2, "email_address": "jack@yahoo.com"},
  246. {"user_id": 3, "email_address": "wendy@gmail.com"},
  247. ])
  248.  
  249.  
  250. update_s = user_table.update().\
  251. values(fullname = "Ed Jones").\
  252. where(user_table.c.username == "ed")
  253.  
  254. conn = move.connect()
  255. result = conn.execute(update_s)
  256. print(result)
  257.  
  258. print(result.rowcount)
  259.  
  260. update_st = user_table.update().\
  261. values(fullname=user_table.c.username + " "
  262. + user_table.select(address_table.c.email_address).\
  263. where(address_table.c.user_id == user_table.c.id)).\
  264. where(
  265. or_(
  266. user_table.c.username == "jack",
  267. user_table.c.username == "wendy"
  268. )
  269. )
  270.  
  271. conn = move.connect()
  272. answ = conn.execute(update_s)
  273. print(answ)
  274.  
  275. Ответ:
  276. <sqlalchemy.engine.result.ResultProxy object at 0xb6bcaeec>
  277. 0
  278. <sqlalchemy.engine.result.ResultProxy object at 0xb6bcaf2c>
  279.  
  280.  
  281. //Создание таблицы network в классе Network
  282. //При помощи Session делаем добавление данных в нее
  283.  
  284. Запрос 7:
  285.  
  286. from sqlalchemy import MetaData
  287. from sqlalchemy import Table, Column
  288. from sqlalchemy import Integer, String, DateTime
  289. from sqlalchemy import create_engine
  290. from sqlalchemy.orm import Session
  291. from sqlalchemy.ext.declarative import declarative_base
  292. Base = declarative_base()
  293.  
  294.  
  295. class Network(Base):
  296. __tablename__ = 'network'
  297.  
  298. network_id = Column(Integer, primary_key=True)
  299. name = Column(String(100), nullable=False)
  300.  
  301. def __repr__(self):
  302. return "<Network(%r, %r)>" % (
  303. self.name
  304. )
  305.  
  306. move =create_engine("sqlite:///some.db")
  307. Base.metadata.create_all(move)
  308.  
  309. session = Session(bind=move)
  310.  
  311. ed_user1 = Network(name='net1')
  312. session.add(ed_user1)
  313.  
  314. ed_user2 = Network(name='net2')
  315. session.add(ed_user2)
  316.  
  317. session.commit()
  318. print(ed_user1.name, ed_user2.name)
  319.  
  320. Ответ:
  321. (u'net1', u'net2')
  322.  
  323.  
  324. //Создание таблицы user и заполнение ее данными
  325. //При помощи order_by делаем упорядочивание данных по алфавиту
  326. //При помощи filter делаем выборку
  327.  
  328. Запрос 8:
  329.  
  330. from sqlalchemy import MetaData, and_, or_
  331. from sqlalchemy import Table, Column
  332. from sqlalchemy import Integer, String, DateTime
  333. from sqlalchemy import create_engine
  334. from sqlalchemy.orm import Session
  335. from sqlalchemy.ext.declarative import declarative_base
  336. Base = declarative_base()
  337.  
  338.  
  339. class User(Base):
  340. __tablename__ = 'user'
  341.  
  342. user_id = Column(Integer, primary_key=True)
  343. name = Column(String(100), nullable=False)
  344. fullname = Column(String(100), nullable=False)
  345.  
  346. def __repr__(self):
  347. return "<User(%r, %r)>" % (
  348. self.name, self.fullname
  349. )
  350.  
  351. move =create_engine("sqlite:///some.db")
  352. Base.metadata.create_all(move)
  353.  
  354. session = Session(bind=move)
  355. session.add_all([
  356. User(name='wendy', fullname='Wendy Weathersmith'),
  357. User(name='mary', fullname='Mary Contrary'),
  358. User(name='fred', fullname='Fred Flinstone')
  359. ])
  360. session.commit()
  361.  
  362. queury = session.query(User.fullname).order_by(User.fullname)
  363. print(queury.all())
  364.  
  365. query2 = session.query(User.fullname).filter(
  366. or_(
  367. User.name=='mary',
  368. User.name=='ed'
  369. ))
  370. print(query2.all())
  371. print(queury[2])
  372.  
  373. Ответ:
  374. [(u'Fred Flinstone',), (u'Mary Contrary',), (u'Wendy Weathersmith',)]
  375. [(u'Mary Contrary',)]
  376. (u'Wendy Weathersmith',)
  377.  
  378.  
  379. //Создание таблиц user и address и заполнение их данными
  380. //При помощи join делаем их объединение
  381. //При помощи filter делаем отбир нужных нам строк, иными словами, делаем выборку
  382.  
  383. Запрос 9:
  384.  
  385. from sqlalchemy import and_, or_
  386. from sqlalchemy import Table, Column, MetaData
  387. from sqlalchemy import Integer, String, DateTime
  388. from sqlalchemy import create_engine
  389. from sqlalchemy import ForeignKey
  390.  
  391. from sqlalchemy.orm import relationship
  392. from sqlalchemy.orm import Session
  393. from sqlalchemy.ext.declarative import declarative_base
  394. Base = declarative_base()
  395.  
  396. class User(Base):
  397. __tablename__ = 'user'
  398.  
  399. user_id = Column(Integer, primary_key=True)
  400. name = Column(String(100), nullable=False)
  401. fullname = Column(String(100), nullable=False)
  402.  
  403. def __repr__(self):
  404. return "<User(%r, %r, %r)>" % (
  405. self.user_id, self.name, self.fullname
  406. )
  407.  
  408. class Address(Base):
  409. __tablename__ = 'address'
  410.  
  411. id = Column(Integer, primary_key=True)
  412. email_address = Column(String, nullable=False)
  413. user_id = Column(Integer, ForeignKey('user.id'))
  414.  
  415. user = relationship("User", backref="addresses")
  416.  
  417. def __repr__(self):
  418. return "<Address(%r,%r)>" % self.id, self.email_address
  419.  
  420. move =create_engine("sqlite://")
  421. Base.metadata.create_all(move)
  422. q = Session(bind=move)
  423.  
  424. q.add_all([
  425. User(name='wendy', fullname='Wendy Weathersmith'),
  426. User(name='mary', fullname='Mary Contrary'),
  427. User(name='fred', fullname='Fred Flinstone')
  428. ])
  429.  
  430. jack = User(name='jack', fullname='Jack Bean')
  431. jack.addresses
  432.  
  433. jack.addresses = [
  434. Address(email_address='jack@gmail.com'),
  435. Address(email_address='j25@yahoo.com'),
  436. Address(email_address='jack@hotmail.com'),
  437. ]
  438.  
  439.  
  440. q.commit()
  441.  
  442. query = ession.query(User.name).join(Address.email_address).\
  443. filter(Address.email_address == 'j25@yahoo.com').all()
  444.  
  445. print(query.all())
  446.  
  447. Ответ:
  448. [('jack', 'j25@yahoo.com')]
  449.  
  450.  
  451. //Создание класса под названием «Учетная запись», с таблицей «account»
  452. //Создание класса под названием «Транзакция», с таблицей «транзакция»
  453. //Добавление связи() в транзакцию с именем «учетная запись», которая относится к «Учетная запись», и имеет backref, называемый «transactions».
  454. //Создание базы данных, создание таблиц, и после вставка этих объектов
  455.  
  456. Запрос 10:
  457.  
  458. from sqlalchemy import func
  459. from sqlalchemy import MetaData, and_, or_
  460. from sqlalchemy import Table, Column
  461. from sqlalchemy import Integer, String, DateTime, Numeric
  462. from sqlalchemy import create_engine
  463. from sqlalchemy import ForeignKey
  464. import os
  465. from sqlalchemy.orm import relationship
  466. from sqlalchemy.orm import Session
  467. from sqlalchemy.ext.declarative import declarative_base
  468. Base = declarative_base()
  469.  
  470. class Account(Base):
  471. __tablename__ = 'account'
  472.  
  473. id = Column(Integer, primary_key=True)
  474. owner = Column(String(50), nullable=False)
  475. balance = Column(Numeric, default=0)
  476.  
  477. def __repr__(self):
  478. return "<Account(%r, %r)>" % (
  479. self.owner, self.balance
  480. )
  481.  
  482. class Transaction(Base):
  483. __tablename__ = 'transaction'
  484.  
  485. id = Column(Integer, primary_key=True)
  486. account_id = Column(Integer, ForeignKey('account.id'))
  487. amount = Column(Numeric, default=0)
  488.  
  489. account = relationship("Account", backref="transactions")
  490.  
  491. def __repr__(self):
  492. return "<Transaction(%r, %r)>" % (
  493. self.owner, self.balance
  494. )
  495.  
  496. move =create_engine("sqlite:///some.db")
  497. Base.metadata.create_all(move)
  498.  
  499. session = Session(bind=move)
  500.  
  501. l1 = Account(owner='Jack Jones', balance=5000)
  502. l2 = Account(owner='Ed Rendell', balance=10000)
  503.  
  504.  
  505. session.add_all([
  506. l1,
  507. l2,
  508. Transaction(amount=500, account=l1),
  509. Transaction(amount=4500, account=l1),
  510. Transaction(amount=6000, account=l2),
  511. Transaction(amount=4000, account=l2)
  512. ])
  513.  
  514. session.commit()
  515.  
  516. query = session.query(
  517. Account.owner, Account.balance,
  518. func.sum(Transaction.amount).lable('summ')
  519. ).select_from(Account).join(Transaction.account).all()
Add Comment
Please, Sign In to add comment