Guest User

Untitled

a guest
Jan 1st, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. """
  2. Auction project
  3. Name: Nguyen Duy Thanh
  4. Date: 27.12.2017
  5. """
  6.  
  7. from flask import Flask, render_template
  8. from flask_sqlalchemy import SQLAlchemy
  9. from sqlalchemy import Column, String, Integer, Float, DateTime, ForeignKey
  10.  
  11. app = Flask(__name__)
  12. app.config.from_pyfile('config.cfg')
  13.  
  14. db = SQLAlchemy(app)
  15.  
  16.  
  17. class Item(db.Model):
  18. __tablename__ = 'item'
  19. id = Column(Integer, primary_key=True)
  20. name = Column(String, nullable=False)
  21. description = Column(String, nullable=False)
  22. start_time = Column(DateTime)
  23. bid = db.relationship('Bid', backref='item', lazy=True)
  24.  
  25. def __init__(self, id, name, description, start_time):
  26. self.id = id
  27. self.name = name
  28. self.description = description
  29. self.start_time = start_time
  30.  
  31.  
  32. class User(db.Model):
  33. __tablename__ = 'user'
  34. id = Column(Integer, primary_key=True)
  35. username = Column(String, nullable=False)
  36. password = Column(String, nullable=False)
  37. bid = db.relationship('Bid', backref='user', lazy=True)
  38.  
  39. def __init__(self, id, username, password):
  40. self.id = id
  41. self.username = username
  42. self.password = password
  43.  
  44.  
  45. class Bid(db.Model):
  46. __tablename__ = 'bid'
  47. id = Column(Integer, primary_key=True)
  48. price = Column(Float, nullable=False)
  49. user_id = Column(Integer, ForeignKey('user.id'), nullable=False)
  50. item_id = Column(Integer, ForeignKey('item.id'), nullable=False)
  51.  
  52. def __init__(self, id, price):
  53. self.id = id
  54. self.price = price
  55.  
  56.  
  57. @app.route('/insert')
  58. def insert():
  59. # Add three users to the database
  60. user1 = User(1, 'ndthanh', 'newYear')
  61. user2 = User(2, 'bill', 'MSN*999')
  62. user3 = User(3, 'steve', 'App@2017')
  63. db.session.add(user1)
  64. db.session.add(user2)
  65. db.session.add(user3)
  66.  
  67. # Add an item to the db
  68. item1 = Item(1, 'baseball', 'The baseball description.', '2017-12-21 00:00:00')
  69. db.session.add(item1)
  70.  
  71. # Make one user auction a baseball
  72. bid1 = Bid(1, 10.5)
  73. bid1.user_id = user1.id
  74. bid1.item_id = item1.id
  75. db.session.add(bid1)
  76.  
  77. # Have each other user place two bids on the baseball
  78. bid2 = Bid(2, 12.3)
  79. bid2.user_id = user2.id
  80. bid2.item_id = item1.id
  81.  
  82. bid3 = Bid(3, 9.5)
  83. bid3.user_id = user2.id
  84. bid3.item_id = item1.id
  85. db.session.add(bid2)
  86. db.session.add(bid3)
  87.  
  88. db.session.commit()
  89. return "Added data into DB!"
  90.  
  91.  
  92. # Perform a query to find out which user placed the highest bid
  93. @app.route('/query')
  94. def query():
  95. max_price = db.session.query(db.func.max(Bid.price)).scalar()
  96. query_result = db.session.query(Bid).filter(Bid.price == max_price).all()
  97.  
  98. user_id_all = []
  99. for item in query_result:
  100. user_id_all.append(item.user_id)
  101.  
  102. # Find out which user placed the highest bid
  103. user_all = []
  104. for uid in user_id_all:
  105. user = User.query.filter_by(id=uid).first()
  106. user_all.append(user.username)
  107.  
  108. return str(user_all)
  109.  
  110.  
  111. # Drop all tables in db if exists
  112. @app.route('/droptbls')
  113. def drop_tables():
  114. db.reflect()
  115. db.drop_all('__all__')
  116. return "The tables have been drop."
  117.  
  118.  
  119. # Create the tables
  120. @app.route('/createtbls')
  121. def create_tables():
  122. db.create_all()
  123. return "The tables have been created."
  124.  
  125. # Home page
  126. @app.route('/')
  127. def index():
  128. return render_template('index.html')
  129.  
  130.  
  131. if __name__ == '__main__':
  132. app.run(debug=True)
Add Comment
Please, Sign In to add comment