单项SQL / python

时间:2019-05-26 17:18:48

标签: python sql

im试图在女巫中创建一个简单的博客文章应用,您可以编写该文章,然后编辑或删除该文章。 我已经到了可以显示帖子的程度,但是我不能编辑它们

我在女巫上做了一个/edit.html页面,我想发表一篇博客文章,而不是对其进行编辑。问题是该帖子没有出现

app.py

from flask import Flask, render_template, request
from flask_mysqldb import MySQL
import yaml
from flask_bootstrap import Bootstrap

app=Flask(__name__)
bootstrap = Bootstrap(app)

db = yaml.load(open('db.yaml'))
app.config['MYSQL_HOST'] = db['mysql_host']
app.config['MYSQL_USER'] = db['mysql_user']
app.config['MYSQL_PASSWORD'] = db['mysql_password']
app.config['MYSQL_DB'] = db['mysql_db']
mysql = MySQL(app)



@app.route('/', methods=['GET','POST'])
def index():
    if request.method == 'POST':
        form = request.form
        user_name = form['user_name']
        besedilo = form['besedilo']
        cur = mysql.connection.cursor()
        cur.execute("INSERT INTO post(user_name, besedilo) VALUES(%s, %s)", (user_name, besedilo))
        mysql.connection.commit()
    return render_template('index.html')

@app.route('/post/')
def post():
    cur = mysql.connection.cursor()
    result_value = cur.execute("SELECT * FROM post")
    if result_value > 0:
        posts = cur.fetchall()
        return render_template('post.html',posts = posts)


@app.route('/edit/<int:id>/', methods=['GET','POST'])
def edit(id):
    cur = mysql.connection.cursor()
    result_value = cur.execute("SELECT * FROM post WHERE post_id = {}".format(id))
    if result_value > 0:
        post = cur.fetchone()
    return render_template('edit.html', post = post)

## here i would like to single out one entry and show it on

@app.route('/delete/')
def delete():
    return render_template('delete.html')

if __name__ == '__main__':
    app.run(debug=True)

edit.html

{% extends 'base.html' %}
{% block sub_content %}

<h1>{{post['user_name']}}</h1>
<h1>{{post['besedilo']}}</h1>
 {% if posts %}
   {% for post in posts %}
    <h3> <a href="/edit/{{edit['edit_id']}}">{{edit['title']}}</a></h3>
   {%endfor%}
{% endblock %}

这应该显示单个条目

1 个答案:

答案 0 :(得分:0)

您可能需要传递正确准备的非动态SQL查询。 尝试像这样修改视图:

@app.route('/edit/<int:id>/', methods=['GET','POST'])
def edit(id):
    cur = mysql.connection.cursor()
    query = "SELECT * FROM post WHERE post_id = {}".format(id)
    result_value = cur.execute(query)
    if result_value > 0:
        post = cur.fetchone()
    return render_template('edit.html', post = post)

或者;

result_value = cur.execute("SELECT * FROM post WHERE post_id = %s", (id,))