Çözüldü Veritabanında veri eklenmiyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

noly12

Femtopat
Katılım
3 Ocak 2023
Mesajlar
11
Daha fazla  
Cinsiyet
Erkek
İyi günler arkadaşlar,
Vs'de kodları çalıştırıyorum. Veri tabanı oluşuyor tablo oluşuyor fakat tabloya kodlarla veri eklenmiyor. Herhangi bir hata mesajıda almıyorum. Msql veritabanındada SQLite veritabanında da aynı.
Bu sitede böyle bir hata buldum. Fakat çözüm için söylenenler benim veri tabanı ayarlarında yok.
Nasıl çözebilirim?
 
Son düzenleyen: Moderatör:
Çözüm
Python:
from flask import Flask, render_template,redirect,url_for,request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////Users/joyboy/Desktop/TodoApp/todo.db'
db = SQLAlchemy(app)

@app.route("/")
def index():
    todos = Todo.query.all()

    return render_template("index.html",todos =todos)

@app.route("/complete/<string:id>")
def completeTodo():
    todo = Todo.query.filter_by(id = id).first()
    todo.complete =not todo.complete

    db.session.commit()
    return redirect(url_for("index"))

@app.route("/delete/<string:id>")
def deleteTodo(id):
    todo = Todo.query.filter_by(id = id).first()
    db.session.delete(todo)
    db.session.commit()
    return redirect(url_for("index"))





@app.route("/add", methods =["POST"])
def addTodo():
    title = request.form.get("title")
    newTodo = Todo(title = title,complete = False)
    db.session.add(newTodo)
    db.session.commit
    return redirect(url_for("index"))





class Todo(db.Model):
   
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80))
    complete = db.Column(db.Boolean)
   

if __name__ =="__main__":
    with app.app_context():
     db.create_all()
    app.run(debug=True)

Bilgisayara yeni geçtim ve gözüme çarpan bir kaç hata var.

İlki def completeTodo(): metodunuzda eksik parametre var.
Aşağıdaki gibi düzeltin;

Python:
@app.route("/complete/<string:id>")
def completeTodo(id):
    todo = Todo.query.filter_by(id = id).first()
    todo.complete =not todo.complete
    db.session.commit()
    return redirect(url_for("index"))

Bundan sonra def addTodo(): metodunuzda bulunan db.session.commit method olmasına rağmen parantezlerini açmamışsınız onu da aşağıdaki gibi düzeltin;

Python:
@app.route("/add", methods =["POST"])
def addTodo():
    title = request.form.get("title")
    newTodo = Todo(title = title,complete = False)
    db.session.add(newTodo)
    db.session.commit()
    return redirect(url_for("index"))


Bunları yaptıktan sonra tekrar deneyip sonucu paylaşır mısın?
Veri eklemeye çalışırken nasıl bir hata alıyorsunuz ekran görüntüsü yükler misiniz?
 
Hiçbir hata mesajı almıyorum. Vs'de flask çalışıyorum. Kod çalışıyor, localhostta verileri giriyorum, fakat veritabanına girdiğimde verilerin eklenmediğini görüyorum.
 
Python:
from flask import Flask, render_template,redirect,url_for,request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////Users/joyboy/Desktop/TodoApp/todo.db'
db = SQLAlchemy(app) 

@app.route("/")
def index():
    todos = Todo.query.all()

    return render_template("index.html",todos =todos)

@app.route("/complete/<string:id>")
def completeTodo():
    todo = Todo.query.filter_by(id = id).first()
    todo.complete =not todo.complete

    db.session.commit()
    return redirect(url_for("index"))

@app.route("/delete/<string:id>")
def deleteTodo(id):
    todo = Todo.query.filter_by(id = id).first()
    db.session.delete(todo)
    db.session.commit()
    return redirect(url_for("index"))





@app.route("/add", methods =["POST"])
def addTodo():
    title = request.form.get("title")
    newTodo = Todo(title = title,complete = False)
    db.session.add(newTodo)
    db.session.commit
    return redirect(url_for("index"))





class Todo(db.Model):
    
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80))
    complete = db.Column(db.Boolean)
    

if __name__ =="__main__":
    with app.app_context():
     db.create_all()
    app.run(debug=True)
 
Python:
from flask import Flask, render_template,redirect,url_for,request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////Users/joyboy/Desktop/TodoApp/todo.db'
db = SQLAlchemy(app)

@app.route("/")
def index():
    todos = Todo.query.all()

    return render_template("index.html",todos =todos)

@app.route("/complete/<string:id>")
def completeTodo():
    todo = Todo.query.filter_by(id = id).first()
    todo.complete =not todo.complete

    db.session.commit()
    return redirect(url_for("index"))

@app.route("/delete/<string:id>")
def deleteTodo(id):
    todo = Todo.query.filter_by(id = id).first()
    db.session.delete(todo)
    db.session.commit()
    return redirect(url_for("index"))





@app.route("/add", methods =["POST"])
def addTodo():
    title = request.form.get("title")
    newTodo = Todo(title = title,complete = False)
    db.session.add(newTodo)
    db.session.commit
    return redirect(url_for("index"))





class Todo(db.Model):
   
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80))
    complete = db.Column(db.Boolean)
   

if __name__ =="__main__":
    with app.app_context():
     db.create_all()
    app.run(debug=True)

Bilgisayara yeni geçtim ve gözüme çarpan bir kaç hata var.

İlki def completeTodo(): metodunuzda eksik parametre var.
Aşağıdaki gibi düzeltin;

Python:
@app.route("/complete/<string:id>")
def completeTodo(id):
    todo = Todo.query.filter_by(id = id).first()
    todo.complete =not todo.complete
    db.session.commit()
    return redirect(url_for("index"))

Bundan sonra def addTodo(): metodunuzda bulunan db.session.commit method olmasına rağmen parantezlerini açmamışsınız onu da aşağıdaki gibi düzeltin;

Python:
@app.route("/add", methods =["POST"])
def addTodo():
    title = request.form.get("title")
    newTodo = Todo(title = title,complete = False)
    db.session.add(newTodo)
    db.session.commit()
    return redirect(url_for("index"))


Bunları yaptıktan sonra tekrar deneyip sonucu paylaşır mısın?
 
Çözüm

Yeni konular

Geri
Yukarı