Guest User

Untitled

a guest
Nov 20th, 2017
371
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. Задание 7
  2. ### slide::
  3. ### title:: Exercises
  4. # 1. Execute this UPDATE - keep the "result" that's returned
  5. #
  6. # UPDATE user SET fullname='Ed Jones' where username='ed'
  7. #
  8. # 2. how many rows did the above statement update?
  9. #
  10. # 3. Tricky bonus! Combine update() along with select().as_scalar()
  11. # to execute this UPDATE:
  12. #
  13. # UPDATE user SET fullname=fullname ||
  14. # (select email_address FROM address WHERE user_id=user.id)
  15. # WHERE username IN ('jack', 'wendy')
  16. #Запрос
  17. from sqlalchemy import create_engine
  18. from sqlalchemy import MetaData
  19. from sqlalchemy import Table, Column
  20. from sqlalchemy import Integer, String
  21. from sqlalchemy import select
  22. from sqlalchemy import ForeignKey
  23. from sqlalchemy import and_, or_
  24. metadata = MetaData()
  25.  
  26. user_table = Table('user', metadata,
  27. Column('id', Integer, primary_key=True),
  28. Column('username', String(50)),
  29. Column('fullname', String(50))
  30. )
  31.  
  32. address_table = Table("address", metadata,
  33. Column('id', Integer, primary_key=True),
  34. Column('user_id', Integer, ForeignKey('user.id'), nullable=False),
  35. Column('email_address', String(100), nullable=False)
  36. )
  37.  
  38.  
  39. e2 = create_engine("sqlite://")
  40. metadata.create_all(e2)
  41. conn = e2.connect()
  42.  
  43. conn.execute(address_table.insert(), [
  44. {"user_id": 1, "email_address": "ed@ed.com"},
  45. {"user_id": 1, "email_address": "ed@gmail.com"},
  46. {"user_id": 2, "email_address": "jack@yahoo.com"},
  47. {"user_id": 3, "email_address": "wandy@gmail.com"},
  48. ])
  49.  
  50. update_s = user_table.update().\
  51. values(fullname="Ed Jones").\
  52. where(user_table.c.username == "ed")
  53. result = conn.execute(update_s)
  54. print(result)
  55. #Количество строчек, которые изменились
  56. print(result.rowcount)
  57.  
  58. update_set = user_table.update().\
  59. values(fullname=user_table.c.username + " " + user_table.select(address_table.c.email_address).\
  60. where(address_table.c.user_id == user_table.c.id)).\
  61. where(
  62. or_(
  63. user_table.c.username == "jack",
  64. user_table.c.username == "wendy"
  65. )
  66. )
  67.  
  68. conn = e2.connect()
  69. result1 = conn.execute(update_set)
  70. print(result1)
  71.  
  72. #Ответ
  73. <sqlalchemy.engine.result.ResultProxy object at 0xb6bb5e6c>
  74. 0
Add Comment
Please, Sign In to add comment