Guest User

Untitled

a guest
Jan 25th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3.  
  4. import os
  5. import json
  6. import psycopg2
  7. import psycopg2.extras
  8. from flask import g
  9. from urllib import parse
  10.  
  11. from lingco import app
  12.  
  13.  
  14. def load_row(row):
  15. loaded = {}
  16. for k, v in row.items():
  17. loaded[k] = json.loads(v) if type(v) == str else v
  18. return loaded
  19.  
  20. def connect_db():
  21. parse.uses_netloc.append("postgres")
  22. if "DATABASE_URL" in os.environ:
  23. url = parse.urlparse(os.environ["DATABASE_URL"])
  24. else:
  25. url = parse.urlparse(app.config["DATABASE_URL"])
  26. conn = psycopg2.connect(
  27. database=url.path[1:],
  28. user=url.username,
  29. password=url.password,
  30. host=url.hostname,
  31. port=url.port
  32. )
  33. print("***OPENING CONNECTION***")
  34. return conn
  35.  
  36.  
  37. @app.teardown_appcontext
  38. def close_db(error):
  39. """Closes the database again at the end of the request
  40. if user is not logged in."""
  41. if hasattr(g, 'db_conn') and not hasattr(g, 'user'):
  42. print("***CLOSING CONNECTION***")
  43. g.db_conn.close()
  44. g.pop('db_conn', None)
  45.  
  46.  
  47. def get_db():
  48. """Opens a new database connection if there is none yet for the
  49. current application context.
  50. """
  51. if not hasattr(g, 'db_conn'):
  52. g.db_conn = connect_db()
  53. return g.db_conn
  54.  
  55.  
  56. def qry(query="",args=(),**kwargs):
  57. conn = get_db()
  58. cursor = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
  59. cursor.execute(query,args)
  60. if "commit" in kwargs and kwargs["commit"]==True:
  61. conn.commit()
  62. if "fetch" in kwargs and kwargs["fetch"]=="rowcount":
  63. return cursor.rowcount
  64. if "fetch" in kwargs and kwargs["fetch"]=="all":
  65. records = cursor.fetchall()
  66. if "load"in kwargs and kwargs["load"]==True:
  67. loaded_records = []
  68. for row in records:
  69. loaded_records.append(load_row(row))
  70. return loaded_records
  71. return records
  72. if "fetch" in kwargs and kwargs["fetch"]=="one":
  73. record = cursor.fetchone()
  74. if "load"in kwargs and kwargs["load"]==True:
  75. record = load_row(record)
  76. if "attr" in kwargs:
  77. return record[kwargs["attr"]]
  78. return record
  79.  
  80. host-162571:flask_try sethkillian$ python run.py
  81. * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
  82. * Restarting with stat
  83. * Debugger is active!
  84. * Debugger PIN: 692-579-362
  85. 127.0.0.1 - - [25/Jan/2018 16:28:51] "GET /login HTTP/1.1" 200 -
  86. ***OPENING CONNECTION***
  87. 127.0.0.1 - - [25/Jan/2018 16:29:01] "POST /login HTTP/1.1" 302 -
  88. ***OPENING CONNECTION***
  89. 127.0.0.1 - - [25/Jan/2018 16:29:01] "GET /dashboard/ HTTP/1.1" 200 -
  90. ***OPENING CONNECTION***
  91. 127.0.0.1 - - [25/Jan/2018 16:29:07] "GET /dashboard/2/roster HTTP/1.1" 200 -
  92. ***OPENING CONNECTION***
  93. 127.0.0.1 - - [25/Jan/2018 16:29:13] "GET /dashboard/ HTTP/1.1" 200 -
  94. ***OPENING CONNECTION***
  95. 127.0.0.1 - - [25/Jan/2018 16:29:18] "GET /questions HTTP/1.1" 200 -
  96. ***OPENING CONNECTION***
  97. 127.0.0.1 - - [25/Jan/2018 16:29:20] "GET /static/js/question_database.js HTTP/1.1" 200 -
  98. ***OPENING CONNECTION***
  99. 127.0.0.1 - - [25/Jan/2018 16:29:34] "GET / HTTP/1.1" 200 -
  100. ***OPENING CONNECTION***
  101. ***CLOSING CONNECTION***
  102. 127.0.0.1 - - [25/Jan/2018 16:29:39] "GET /logout HTTP/1.1" 302 -
  103. 127.0.0.1 - - [25/Jan/2018 16:29:39] "GET / HTTP/1.1" 200 -
  104. 127.0.0.1 - - [25/Jan/2018 16:29:43] "GET /dashboard/ HTTP/1.1" 302 -
  105. 127.0.0.1 - - [25/Jan/2018 16:29:43] "GET /login HTTP/1.1" 200 -
Add Comment
Please, Sign In to add comment