MIF_E31211906/pythonpj/demam_berdarah.py

75 lines
2.2 KiB
Python

from flask import Flask, render_template, request
import mysql.connector
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
app = Flask(__name__)
# Fungsi untuk terhubung ke database
def connect_to_database():
try:
connection = mysql.connector.connect(
host="localhost",
user="root",
password="",
database="steven"
)
print("Connected to the database")
return connection
except mysql.connector.Error as e:
print("Error connecting to database:", e)
return None
# Fungsi untuk mengambil data dari database
def fetch_data_from_database(connection):
try:
cursor = connection.cursor()
cursor.execute("SELECT januari, februari, maret, april, mei, juni, juli, agustus, september, oktober, november, desember FROM demam_berdarah ORDER BY id DESC LIMIT 1")
data = cursor.fetchone()
cursor.close()
return data
except mysql.connector.Error as e:
print("Error fetching data from database:", e)
return None
# Fungsi untuk mengambil hasil ringkasan model, p-value, dan forecast
def get_model_results(data):
if data:
data_series = list(data)
# Menyesuaikan model ARIMA ke data
model = ARIMA(data_series, order=(1, 1, 1))
model_fit = model.fit()
# Mendapatkan hasil ringkasan model
model_summary = model_fit.summary()
# Mendapatkan p-value
p_value = model_fit.pvalues
# Mendapatkan forecast values
forecast = model_fit.forecast(steps=10) # Adjust steps as needed
return model_summary, p_value, forecast
else:
return None, None, None
@app.route('/', methods=['GET', 'POST'])
def index():
connection = connect_to_database()
if connection:
data = fetch_data_from_database(connection)
if data:
model_summary, p_value, forecast = get_model_results(data)
return render_template('index.html', model_summary=model_summary, p_value=p_value, forecast=forecast, data_series=data)
else:
return "No data available from the database"
else:
return "Failed to connect to the database"
if __name__ == '__main__':
app.run(debug=True)