Данные вставки sqlalchemy не работают

В models.py я определил:

class slidephoto(db.Model): __tablename__ = 'slide_photo' id = db.Column(db.Integer, primary_key=True) uid = db.Column(db.Integer, nullable=False) photo = db.Column(db.String(collation='utf8_bin'), nullable=False) def __init__(self, uid, photo): self.uid = uid self.photo = photo def __repr__(self): return "{'photo': " + str(self.photo) + "}" 

Я выбираю такие данные (например):

 @app.route('/index/') def index(): user_photo = slidephoto.query.filter_by(uid=5).all() 

Теперь я хочу знать, как вставлять данные. Я попробовал это:

 @app.route('/insert/') def insert(): act = slidephoto.query.insert().execute(uid='2016', photo='niloofar.jpg') return 'done' 

Но он не делает то, что мне нужно. Что мне делать?

Я прочитал и протестировал другие ответы и решения, но ни один из них не был полезен для моего сценария.

================ обновление ================

Я не знаю, если это поможет … но вот все импорт и конфиги в app.py:

 import os, sys from niloofar import * from flask import Flask, request, url_for, render_template, make_response, redirect from flask_sqlalchemy import SQLAlchemy from werkzeug.utils import secure_filename app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://myusername:mypassword@localhost/mydbname' db = SQLAlchemy(app) app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER 

3 Solutions collect form web for “Данные вставки sqlalchemy не работают”

Я пишу простую демонстрацию, которая вставляет работу, вы можете считать ее ссылкой:

 from flask import Flask from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class FirstTest(db.Model): __tablename__ = "first_test" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) def __init__(self, name): self.name = name # Fill your db info here mysql_info = { "user": "", "pwd": "", "host": "", "port": 3306, "db": "", } app = Flask(__name__) app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True # Here I use pymysql app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://{0}:{1}@{2}:{3}/{4}".format( mysql_info["user"], mysql_info["pwd"], mysql_info["host"], mysql_info["port"], mysql_info["db"]) db.__init__(app) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": with app.test_request_context("/"): record = FirstTest("test") db.session.add(record) db.session.commit() 

Вы должны использовать запрос как метод. Подобно 'query ()'

Надеюсь, что мой ответ поможет вам решить проблему.

 from sqlalchemy import create_engine, MetaData, Table, insert # I have tested this using my local postgres db. engine = create_engine('postgresql://localhost/db', convert_unicode=True) metadata = MetaData(bind=engine) con = engine.connect() act = insert(slidephoto).values(uid='2016', photo='niloofer.jpg') con.execute(act) 
Python - лучший язык программирования в мире.