标签: flask-sqlalchemy

类型错误:“分页”对象在 Flask 中不可迭代

我有一个包含数据的表。我想在 API 响应中获取带有分页的结果集。

我正在使用GET调用API的方法。这里是

要求:

  1. 需要页码和数据条数
  2. 包含上一个和下一个 URL 的分页数据

我的代码:

@api.route('/', methods=["GET"])
@app.route('/page/<int:page>')
class List(Resource):
    """USER data(s)"""

    def get(self, page=1):
        """GET Lists"""
        all_data = User.query.paginate(page, per_page=2)
        result = user_serializer.dump(all_data)
        return result
Run Code Online (Sandbox Code Playgroud)

问题:

类型错误:“分页”对象在 Flask 中不可迭代

python flask python-3.x flask-sqlalchemy

1
推荐指数
1
解决办法
6493
查看次数

Python 3 Flask Rest Api:“request.get_json()”给出 TypeError:“NoneType”对象不可下标

我正在 python Flask 中创建一条路线,它将作为其余 api 来注册用户。当我尝试在 POST 方法中获取通过邮递员传递的 json 数据时,出现错误TypeError: 'NoneType' object is not subscriptable

我来自邮递员的请求: http://127.0.0.1:5000

/register 原始输入:{"username":"alok","password":"1234"}

我的路线和功能:

@app.route('/register', methods=['GET', 'POST'])
def signup_user():
    data = request.get_json()
    return data['username']
Run Code Online (Sandbox Code Playgroud)

据我所知,上述函数应该返回:“ alok

但我收到错误:TypeError: 'NoneType' object is not subscriptable

任何帮助将不胜感激

flask-sqlalchemy flask-restful

1
推荐指数
1
解决办法
3650
查看次数

Flask-SQLAlchemy - 如何订购查询对象列表?

我有一些文件和有关它们的信息在SQL数据库中.对于给定的文件组,它们将共享共同的gallery_id(文本)和不同的upload_time(日期时间).我正在尝试获取所有共享一个公共图库ID的文件列表,然后按upload_time对它们进行排序,但它无法正常工作.这是我使用的语法:

    >>> foo = Storedfile.query.filter_by(
        gallery_id ='kgLivY').all().order_by(Storedfile.upload_time)
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        AttributeError: 'list' object has no attribute 'order_by'
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

sql sqlalchemy flask flask-sqlalchemy

0
推荐指数
1
解决办法
2596
查看次数

TypeError:'Required'对象不是可迭代的Flask WTF Forms

我正在关注http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982教程来开发我自己的应用程序.

我试图创建一个注册表但遇到此错误:

TypeError: 'Required' object is not iterable 
Run Code Online (Sandbox Code Playgroud)

我的路线页是

from cafe_klatch import app
from flask import render_template,request,flash
from forms import ContactForm, SignupForm
from models import db


@app.route('/')
@app.route('/index')

def index():
    return render_template('index.html')

@app.route('/contact', methods = ['GET','POST'])

def contact():
    form1 = ContactForm()

    if request.method == 'POST':
        if form.validate() == False:
            flash('All fields are required.')
            return render_template('contact.html',form = form)
        else:
            return 'Form posted.'    
    elif request.method == 'GET':
        return render_template('contact.html',form = form)  


@app.route('/signup', methods =['GET','POST'])

def signup():
    form = SignupForm() 

    if …
Run Code Online (Sandbox Code Playgroud)

python flask flask-sqlalchemy flask-login flask-wtforms

0
推荐指数
1
解决办法
3531
查看次数

Flask中的一对一关系

我正在尝试使用SqlAlchemy在Flask中创建一对一的关系.我按照上一篇文章进行了操作,并创建了以下类:

class Image(db.Model):
    __tablename__ = 'image'
    image_id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(8))

class Blindmap(db.Model):
    __tablename__ = 'blindmap'
    module_id = db.Column(db.Integer, primary_key = True)
    image_id = db.Column(db.Integer, ForeignKey('image.image_id'))
Run Code Online (Sandbox Code Playgroud)

虽然它可以将模型迁移到sqlite3数据库,但是当我尝试创建一个单独的对象通知另一个类的值为image_id时,我有一个错误.例如:

image1 = Image(image_id=1, name='image1.png')
blindmap1 = Blindmap(module_id=1, image_id=1)
Run Code Online (Sandbox Code Playgroud)

而我所遇到的错误就是随之而来的错误.我不太清楚这个完整性错误是什么.我还尝试在创建blindmap1时插入对象本身,但没有成功.

======================================================================
ERROR: test_commit_blindmap (__main__.TestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "tests.py", line 183, in test_commit_blindmap
  blindmap1.add_label(label1)
File "/home/thiago/Documents/ANU/MEDGg1/MEDG/LAWA/2014/trunk/app/models.py", line 325,   in add_label
db.session.commit()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 150, in do
  return getattr(self.registry(), name)(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 776, …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy sqlalchemy-migrate flask flask-sqlalchemy

0
推荐指数
1
解决办法
3520
查看次数

在flask-sqlachemy下的Pandas read_sql数据库引擎

我正在Flask中编写一个Web应用程序,我正在使用pandas从MySQL数据库中检索数据.以下用于工作,使用我从另一篇文章中读到的内容:

db = SQLAlchemy()
app = Flask(__name__)
app.config.from_object(config['default'])
db.init_app(app)
conn = db.engine.connect().connection
Run Code Online (Sandbox Code Playgroud)

然后在视图函数中(在相同的.py文件中):

@app.route('/report', methods=['GET', 'POST'])
def report():
    form = ReportForm()
...
    sql = '''SELECT * FROM availability ...'''
    df = psql.read_sql(sql, conn)
...

    return render_template('report.html', form=form, df=df)
Run Code Online (Sandbox Code Playgroud)

此网页显示基于所选日期间隔的表格(来自表单).我通过x-editable在网页上添加了此表的内联编辑,我看到更改已发布到数据库,但如果我再次提交表单,则表只会在更改之前加载旧数据.我只是在重新打开网页后看到了这些变化,这很奇怪.

在read_sql工作之前移动'conn'行:

sql = '''SELECT * FROM availability ...'''
conn = db.engine.connect().connection
df = psql.read_sql(sql, conn)
Run Code Online (Sandbox Code Playgroud)

但这并不好,因为我必须为每个查询重复此操作(并且每个视图都有一些查询).有没有办法我只是在开始时声明这个连接对象一次并将其结束?SQLAlchemy的ORM可以工作,但我更喜欢在这种情况下编写原始SQL.

编辑:

joris的建议适用于一个查询,但现在我遇到了另一个错误:

File "C:\Users\KF\flask-test\hello.py", line 107, in report
df = pd.read_sql_query(sql.format(vd='20140727', sd=sd, ed=ed), db.engine)
File "C:\Anaconda\envs\lightson\lib\site-packages\pandas\io\sql.py", line 363, in read_sql_query
parse_dates=parse_dates)
File "C:\Anaconda\envs\lightson\lib\site-packages\pandas\io\sql.py", line 823, …
Run Code Online (Sandbox Code Playgroud)

python pandas flask-sqlalchemy

0
推荐指数
1
解决办法
2418
查看次数

如何以JSON的形式返回结果列表?

我想以JSON的形式返回查询结果.我正在使用以下路由将一个模型实例作为JSON对象返回.

@mod.route('/autocomplete/<term>', methods=['GET'])
def autocomplete(term):

    country = Country.query.filter(Country.name_pt.ilike('%'+ term + '%')).first()

    country_dict = country.__dict__
    country_dict.pop('_sa_instance_state', None)

    return jsonify(json_list=country_dict) 
Run Code Online (Sandbox Code Playgroud)

如果我使用该first()方法,此代码很有效.但是,我需要使用它all()来获得所有结果.当我这样做时,我得到以下错误.

country_dict = country.__dict__
AttributeError: 'list' object has no attribute '__dict__'
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能将整个结果列表作为JSON返回?

python sqlalchemy flask-sqlalchemy

0
推荐指数
1
解决办法
246
查看次数

Flask/SQLalchemy/Jinja2 - 嵌套循环渲染

我是Flask的初学者.我正在构建一个简单的测验应用程序.我有两张桌子.一个是问题表,另一个是选项表,有一个正确的答案.我想展示一个问题和四个选项,然后是第二个问题,等等.我搜索了如何渲染到模板的每个地方.困住了路障.尝试了不同的懒惰选项.

Model.py
class Question(db.Model):
__tablename__ = 'edu_word_questions'
question_id = db.Column(db.Integer, primary_key = True)
word = db.Column(db.String(100))
question_type = db.Column(db.String(100))
answers = db.relationship('Question_answers', backref='Question',
                            lazy='subquery')

class Question_answers(db.Model):
__tablename__ = 'edu_question_answers'
answer_id = db.Column(db.Integer, primary_key=True)
answer = db.Column(db.String(100))
question_id = db.Column(db.Integer, db.ForeignKey('edu_word_questions.question_id'))

routes.py
@app.route('/quiz')
def quiz():
  quiz = db.session.query(Question, Question_answers).join(Question_answers,Question.question_id == Question_answers.question_id)
# quiz = db.session.query(Question).all()
# answers = db.session.query(Question_answers).all()
return render_template('quiz.html', quiz=quiz)

HTML 
{% for key,value in quiz %}
 <li><h2>{{ word }}</h2>
 <li><h2>{{ answer }}</h2>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

python jinja2 flask flask-sqlalchemy

0
推荐指数
1
解决办法
2580
查看次数

Flask-SQLAlchemy查询在过滤器上显示负面条件

我正在尝试使用方法的负面条件进行Flask-SQLAlchemy查询filter_by().

我可以很容易地得到谁是我的系统管理员User.query.filter_by(admin=True)和谁没有,User.query.filter_by(admin=False)但我想用一个过滤器来查询要忽略的内容,例如:

notRach = User.query.filter_by(name!='Rachmaninoff')
# queries for all users whose name isn't Rachmaninoff
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?

python flask flask-sqlalchemy

0
推荐指数
1
解决办法
789
查看次数

Flask-Admin如何在行旁边添加按钮

我使用Flask并使用Flask-admin来管理学费支付应用程序。

Flask-Admin通过我在models.py中声明的SQLAlchemy自动生成了表行

这是我的桌子的图像: 在此处输入图片说明 现在,我想在每个总账单号旁边添加一个按钮,以结账。

我知道如何与添加列column_list中,通过提供方法模型视图,因为我尝试像下面这段代码:

column_list = ('student_id', 'total_bill', 'Pay Now')
Run Code Online (Sandbox Code Playgroud)

它将使视图显示如下: 在此处输入图片说明 现在,我想要“立即付款”列中的每个行都有一个按钮,就像我用HTML手动编写这样的代码一样: 在此处输入图片说明 每行都有一个结帐按钮,正如我上面提到的,此目的是为了结帐按钮。

所以,该怎么做..?,任何帮助将不胜感激

python flask flask-sqlalchemy flask-login flask-admin

0
推荐指数
1
解决办法
872
查看次数