dhruv2842 commited on
Commit
d318540
Β·
verified Β·
1 Parent(s): afbd631

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -23
app.py CHANGED
@@ -6,18 +6,29 @@ import os
6
  import cv2
7
  import tensorflow as tf
8
  from datetime import datetime
9
- import psycopg2
10
- from psycopg2.extras import DictCursor
11
 
12
  app = Flask(__name__)
13
 
14
- # βœ… 1. Connect to PostgreSQL (Supabase)
15
- POSTGRES_URL = "postgresql://postgres.otihqjwfqjwccsipzroy:Dhruvagr%[email protected]:5432/postgres"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
- def get_db_connection():
18
- """Get a new database connection."""
19
- conn = psycopg2.connect(POSTGRES_URL)
20
- return conn
21
 
22
  # βœ… 2. Load Model
23
  model = load_model('mobilenet_glaucoma_model.h5', compile=False)
@@ -86,7 +97,7 @@ def test_file():
86
 
87
  @app.route('/predict', methods=['POST'])
88
  def predict():
89
- """Perform prediction and save results to PostgreSQL (Supabase)."""
90
  if 'file' not in request.files:
91
  return jsonify({'error': 'No file uploaded'}), 400
92
 
@@ -109,15 +120,14 @@ def predict():
109
  gradcam_filename = f"gradcam_{int(datetime.now().timestamp())}.png"
110
  save_gradcam_image(img, heatmap, filename=gradcam_filename)
111
 
112
- # Save results to PostgreSQL
113
- conn = get_db_connection()
114
  cursor = conn.cursor()
115
  cursor.execute("""
116
  INSERT INTO results (image_filename, prediction, confidence, gradcam_filename, timestamp)
117
- VALUES (%s, %s, %s, %s, %s)
118
  """, (file.filename, result, confidence, gradcam_filename, datetime.now().isoformat()))
119
  conn.commit()
120
- cursor.close()
121
  conn.close()
122
 
123
  return jsonify({
@@ -133,23 +143,22 @@ def predict():
133
 
134
  @app.route('/results', methods=['GET'])
135
  def results():
136
- """List all results from the PostgreSQL database."""
137
- conn = get_db_connection()
138
- cursor = conn.cursor(cursor_factory=DictCursor)
139
  cursor.execute("SELECT * FROM results ORDER BY timestamp DESC")
140
  results_data = cursor.fetchall()
141
- cursor.close()
142
  conn.close()
143
 
144
  results_list = []
145
  for record in results_data:
146
  results_list.append({
147
- 'id': record['id'], # Assumes 'id' is your primary key column
148
- 'image_filename': record['image_filename'],
149
- 'prediction': record['prediction'],
150
- 'confidence': record['confidence'],
151
- 'gradcam_filename': record['gradcam_filename'],
152
- 'timestamp': record['timestamp']
153
  })
154
 
155
  return jsonify(results_list)
 
6
  import cv2
7
  import tensorflow as tf
8
  from datetime import datetime
9
+ import sqlite3
 
10
 
11
  app = Flask(__name__)
12
 
13
+ # βœ… 1. SQLite database setup
14
+ DB_PATH = 'results.db'
15
+ def init_db():
16
+ conn = sqlite3.connect(DB_PATH)
17
+ cursor = conn.cursor()
18
+ cursor.execute("""
19
+ CREATE TABLE IF NOT EXISTS results (
20
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
21
+ image_filename TEXT,
22
+ prediction TEXT,
23
+ confidence REAL,
24
+ gradcam_filename TEXT,
25
+ timestamp TEXT
26
+ )
27
+ """)
28
+ conn.commit()
29
+ conn.close()
30
 
31
+ init_db()
 
 
 
32
 
33
  # βœ… 2. Load Model
34
  model = load_model('mobilenet_glaucoma_model.h5', compile=False)
 
97
 
98
  @app.route('/predict', methods=['POST'])
99
  def predict():
100
+ """Perform prediction and save results to SQLite database."""
101
  if 'file' not in request.files:
102
  return jsonify({'error': 'No file uploaded'}), 400
103
 
 
120
  gradcam_filename = f"gradcam_{int(datetime.now().timestamp())}.png"
121
  save_gradcam_image(img, heatmap, filename=gradcam_filename)
122
 
123
+ # Save results to SQLite
124
+ conn = sqlite3.connect(DB_PATH)
125
  cursor = conn.cursor()
126
  cursor.execute("""
127
  INSERT INTO results (image_filename, prediction, confidence, gradcam_filename, timestamp)
128
+ VALUES (?, ?, ?, ?, ?)
129
  """, (file.filename, result, confidence, gradcam_filename, datetime.now().isoformat()))
130
  conn.commit()
 
131
  conn.close()
132
 
133
  return jsonify({
 
143
 
144
  @app.route('/results', methods=['GET'])
145
  def results():
146
+ """List all results from the SQLite database."""
147
+ conn = sqlite3.connect(DB_PATH)
148
+ cursor = conn.cursor()
149
  cursor.execute("SELECT * FROM results ORDER BY timestamp DESC")
150
  results_data = cursor.fetchall()
 
151
  conn.close()
152
 
153
  results_list = []
154
  for record in results_data:
155
  results_list.append({
156
+ 'id': record[0],
157
+ 'image_filename': record[1],
158
+ 'prediction': record[2],
159
+ 'confidence': record[3],
160
+ 'gradcam_filename': record[4],
161
+ 'timestamp': record[5]
162
  })
163
 
164
  return jsonify(results_list)