Merhabalar Bu Aşağı Bırakacağım Koddaki 39. Satırdan İtibaren olan mysql bağlantısı interval server error veriyor sorun ne olabilir acaba?
from flask import Flask,render_template,flash,redirect,url_for,session,logging,request
from flask_mysqldb import MySQL
from wtforms import Form,StringField,TextAreaField,PasswordField,validators,EmailField
from passlib.hash import sha256_crypt
from functools import wraps
tik = True
inputbox = [False,-1]
app = Flask(__name__)
def login_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if session.get("username",None) is None:
flash("Çıkış Yapman İçin Giriş Yapmalısın!","danger")
return redirect(url_for("index"))
return f(*args, **kwargs)
return decorated_function
def login_required2(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if session.get("username",None) is not None:
flash("Giriş Yapmak Veya Kayıt Olmak İçin Çıkış Yapmalısın!","danger")
return redirect(url_for("index"))
return f(*args, **kwargs)
return decorated_function
def login_required3(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if session.get("username",None) is None:
flash("Bu Sayfayı Görüntülemek İçin Giriş Yap","danger")
return redirect(url_for("login"))
return f(*args, **kwargs)
return decorated_function
app.secret_key = "QhfN4bP6Evc72pTHB3wDJx"
app.config["MYSQL_HOST"] = "sefaAydin.mysql.pythonanywhere-services.com"
app.config["MYSQL_USER"] = "sefaAydin"
app.config["MYSQL_PASSWORD"] = "06102011Sa"
app.config["MYSQL_DB"] = "sefaAydin$sefablog"
app.config["MYSQL_CURSORCLASS"] = "DictCursor"
mysql = MySQL(app)
class RegisterForm(Form):
name = StringField("İsim",validators=[validators.Length(min=3,max=30),validators.DataRequired()])
username = StringField("Kullanıcı İsmi",validators=[validators.Length(min=3,max=30),validators.DataRequired()])
email = EmailField("Email",validators=[validators.DataRequired(),validators.Email()])
password = PasswordField("Şifreniz",validators=[validators.DataRequired(),validators.Length(min=7,max=30)])
passwordre = PasswordField("Şifre Tekrar",validators=[validators.EqualTo("password",message="Şifreler Uyuşmuyor")])
class LoginForm(Form):
username = StringField("Kullanıcı İsmi",validators=[validators.DataRequired(),validators.Length(min=3,max=30)])
password = PasswordField("Şifreniz",validators=[validators.DataRequired(),validators.Length(7,30)])
class ArticleForum(Form):
title = StringField("Başlık",validators=[validators.DataRequired(),validators.Length(min=2,max=100)])
content = TextAreaField("Makaleniz",validators=[validators.DataRequired()])
class CommentForm(Form):
content = TextAreaField("Yorumunuz",validators=[validators.DataRequired(),validators.Length(min=5,max=100)])
@app.route("/")
def index():
return render_template("index.html",tik = tik)
@app.route("/about")
def about():
return render_template("about.html")
@app.route("/articles")
def articles():
conn = mysql.connection
cursor = conn.cursor()
sorgu = "SELECT *FROM articles"
result = cursor.execute(sorgu)
sorgu = "INSERT INTO articles(author,content,title) VALUES(%s,%s,%s)"
if (result > 0):
data = cursor.fetchall()
return render_template("articles.html",articles = data)
return render_template("articles.html",articles = None)
@app.route("/projects")
def projects():
return render_template("projects.html")
@app.route("/documents")
def documents():
return render_template("documents.html")
@app.route("/register",methods = ["GET","POST"])
@login_required2
def register():
form = RegisterForm(request.form)
if (request.method == "POST" and form.validate()):
cursor = mysql.connection.cursor()
sorgu = "INSERT INTO kullanicilar(name,username,email,password) VALUES(%s,%s,%s,%s)"
shapassword = sha256_crypt.encrypt(form.password.data)
cursor.execute(sorgu,(form.name.data,form.username.data,form.email.data,shapassword))
mysql.connection.commit()
cursor.close()
flash("Başarıyla Kayıt Oldunuz!","success")
return redirect(url_for("login"))
return render_template("register.html",form = form)
@app.route("/login",methods = ["GET","POST"])
@login_required2
def login():
form = LoginForm(request.form)
if (request.method == "POST" and form.validate()):
entered_username = form.username.data
entered_password = form.password.data
cursor = mysql.connection.cursor()
sorgu = "SELECT *FROM kullanicilar WHERE username = %s"
result = cursor.execute(sorgu,(entered_username,))
if (result > 0):
data = cursor.fetchone()
real_password = data["password"]
if (sha256_crypt.verify(entered_password,real_password)):
session["username"] = entered_username
session["logged_in"] = True
flash("Başarıyla Giriş Yaptınız!","success")
return redirect(url_for("index"))
else:
flash("Parolanızı Yanlış Girdiniz!","danger")
return redirect(url_for("login"))
else:
flash("Böyle Bir Kullanıcı Bulunmuyor","danger")
return redirect(url_for("login"))
return render_template("login.html",form = form)
@app.route("/exit")
@login_required
def log_out():
session["username"] = None
session["logged_in"] = False
return redirect(url_for("index"))
@app.route("/addarticle", methods=["GET", "POST"])
@login_required3
def addarticle():
form = ArticleForum(request.form)
if request.method == "POST":
if form.validate():
cursor = mysql.connection.cursor()
sorgu = "INSERT INTO articles(author, content, title) VALUES(%s, %s, %s)"
cursor.execute(sorgu, (session["username"], form.content.data, form.title.data))
mysql.connection.commit()
cursor.close()
flash("Makaleniz Yayınlandı!", "success")
return redirect(url_for("controlpanel"))
else:
flash("Bir Şeyleri Eksik Girmiş Olabilirmisin?", "danger")
return render_template("addarticle.html", form=form)
@app.route("/article/<string:id>")
def articleview(id):
cursor = mysql.connection.cursor()
sorgu = "SELECT *FROM articles WHERE id = %s"
result = cursor.execute(sorgu,(id,))
sorgu2 = "SELECT *FROM comments WHERE article_id = %s"
if (result > 0):
data = cursor.fetchone()
result2 = cursor.execute(sorgu2,(id,))
return render_template("articleview.html",article = data,comments = cursor.fetchall(),inputbox = inputbox)
else:
flash("Aradığın Makale Mevcut Değil","warning")
return redirect(url_for("index"))
@app.route("/article/delete/<string:id>")
@login_required3
def deletearticle(id):
cursor = mysql.connection.cursor()
username = session["username"]
sorgu = "SELECT *FROM articles WHERE id = %s AND author = %s"
result = cursor.execute(sorgu,(id,username))
if (result > 0):
sorgu2 = "DELETE FROM articles WHERE id = %s AND author = %s"
cursor.execute(sorgu2,(id,username))
mysql.connection.commit()
cursor.close()
flash("Makaleniz Başarıyla Silindi","success")
return redirect(url_for("controlpanel"))
else:
flash("Bu Makale Mevcut Değil Veya Bu İşlemi Yapmaya Yetkiniz Yok","warning")
return redirect(url_for("index"))
@app.route("/article/update/<string:id>",methods = ["GET","POST"])
def updatearticle(id):
form = ArticleForum(request.form)
username = session["username"]
cursor = mysql.connection.cursor()
sorgu = "SELECT *FROM articles WHERE id = %s AND author = %s"
result = cursor.execute(sorgu,(id,username))
if (request.method == "POST"):
if (form.validate()):
sorgu2 = "UPDATE articles SET title = %s, content = %s WHERE id = %s AND author = %s"
cursor.execute(sorgu2,(form.title.data,form.content.data,id,username))
mysql.connection.commit()
cursor.close()
flash("Makaleniz Başarıyla Güncellendi!","success")
return redirect(url_for("controlpanel"))
else:
flash("Lütfen Tüm Alanları Doldurduğunuzdan Emin Olun!","danger")
return redirect(url_for(f"/article/update/{id}"))
if (result > 0):
data = cursor.fetchone()
form.title.data = data["title"]
form.content.data = data["content"]
return render_template("updatearticle.html",form = form)
else:
flash("Aradığınız Makale Mevcut Değil Veya Bu İşlemi Yapmaya Yetkiniz Yok","warning")
return redirect(url_for("index"))
@app.route("/search",methods = ["GET","POST"])
def search_method():
if (request.method == "GET"):
return redirect(url_for("articles"))
if (request.method == "POST"):
keyword = request.form.get("keyword")
cursor = mysql.connection.cursor()
sorgu = "SELECT *FROM articles WHERE title LIKE '%" + keyword + "%'"
result = cursor.execute(sorgu)
if (result > 0):
data = cursor.fetchall()
return render_template("articles.html",articles=data)
else:
flash("Aradığınız Başlığa Uygun Makale Bulunmuyor","warning")
return redirect(url_for("articles"))
@app.route("/controlpanel",methods = ["GET","POST"])
@login_required3
def controlpanel():
cursor = mysql.connection.cursor()
sorgu = "SELECT *FROM articles WHERE author = %s"
result = cursor.execute(sorgu,(session["username"],))
if (result > 0):
data = cursor.fetchall()
cursor.close()
return render_template("control.html",article = data)
else:
return render_template("control.html",article = None)
@app.route("/addcomment/<string:id>",methods = ["GET","POST"])
@login_required3
def add_comment(id):
cursor = mysql.connection.cursor()
sorgu = "SELECT *FROM articles WHERE id = %s"
result = cursor.execute(sorgu,(id,))
username = session["username"]
if (request.method == "POST"):
if (result > 0):
data = request.form.get("comment")
if (len(data) > 100):
flash("Yorum Boyutu Maximum 100 Karakter Olabilir!","danger")
return redirect(url_for("articleview",id=id))
sorgu2 = "INSERT INTO comments(content,username,article_id) VALUES(%s,%s,%s)"
cursor.execute(sorgu2,(data,username,id))
mysql.connection.commit()
cursor.close()
flash("Yorumunuz Başarıyla Eklendi!","success")
return redirect(url_for("articleview",id=id))
else:
flash("Yorum Yapmaya Çalıştığınız Makale Mevcut Değil!","warning")
return redirect(url_for("articles"))
return redirect(url_for("articleview",id=id))
@app.route("/delete/comment/<string:id>")
@login_required3
def delete_comment(id):
cursor = mysql.connection.cursor()
sorgu = "SELECT *FROM comments WHERE id = %s AND username = %s"
result = cursor.execute(sorgu,(id,session["username"]))
if (request.method == "GET"):
if (result > 0):
data = cursor.fetchone()
sorgu2 = "DELETE FROM comments WHERE id = %s AND username = %s"
cursor.execute(sorgu2,(id,session["username"]))
mysql.connection.commit()
cursor.close()
flash("Yorumunuz Başarıyla Silindi!","success")
return redirect(url_for("articleview",id=data["article_id"]))
flash("Bu Yorum Mevcut Değil Veya Bu İşlemi Yapmaya Yetkiniz Yok!","danger")
return redirect(url_for("index"))
else:
flash("Bu Yorum Mevcut Değil Veya Bu İşlemi Yapmaya Yetkiniz Yok!","danger")
return redirect(url_for("index"))
@app.route("/response_comment/<string:id>",methods = ["GET","POST"])
@login_required3
def response_comment(id):
global inputbox
cursor = mysql.connection.cursor()
sorgu = "SELECT *FROM comments WHERE id = %s AND username = %s"
result = cursor.execute(sorgu,(id,session.get("username")))
data = cursor.fetchone()
if (request.method == "POST"):
if (inputbox):
sorgu2 = "INSERT INTO comments(content,username,response_user,article_id) VALUES(%s,%s,%s,%s)"
sorgu3 = "SELECT *FROM comments WHERE id = %s"
result2 = cursor.execute(sorgu3,(id,))
if (result2 > 0):
data = cursor.fetchone()
if (request.form.get("response_content")):
cursor.execute(sorgu2,(request.form.get("response_content"),session["username"],id,data["article_id"]))
mysql.connection.commit()
cursor.close()
else:
flash("Yanıtlamaya Çalıştığınız Yorum Mevcut Değil!","warning")
inputbox[0] = False
inputbox[1] = -1
return redirect(url_for("articleview",id=data["article_id"]))
inputbox[0] = not inputbox[0]
inputbox[1] = data["id"]
return redirect(url_for("articleview",id=data["article_id"],inputbox=inputbox))
else:
flash("Bir Yanlışlık Oldu Sanırım?","danger")
return redirect(url_for("index"))
@app.errorhandler(404)
def error404(error):
return render_template("error.html")
if __name__ == "__main__":
app.run(debug=True)