2016-08-17 11 views
2

動作しない私が定義している: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内のすべての輸入品とのconfigsです:

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:[email protected]/mydbname' 
db = SQLAlchemy(app) 
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER 
+0

コミットしましたか? – univerio

+0

コミットするとどういう意味ですか? – Andishe

+0

'db.session.commit()' – univerio

答えて

0

私はあなたが参照としてそれを取ることができ、作業を挿入行う簡単なデモを書く:

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() 
0

あなたは、クエリを使用する必要があります方法として。 Like 'query()'

0

私の答えがあなたの問題解決に役立つことを願っています。

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) 
+0

これをテストすると、モデルの列属性を変更する必要がありました。photo = db.Column(db.String(30)、nullable = False) – Jalal