小编boa*_*tor的帖子

使用Flask,SQLAlchemy和WTForms更新多对多关系?

我想使用代表这些模型的Flask,SQLAlchemy和WTForms为多对多关系创建一个表单:

personaddress = db.Table('personaddress',
    db.Column('person', db.Integer, db.ForeignKey('person.id')),
    db.Column('address', db.Integer, db.ForeignKey('address.id'))
)

class Person(db.Model):
    __tablename__ = "person"
    id = db.Column(Integer, primary_key=True)
    name = db.Column(String, nullable=False)
    addresses = db.relationship('Address', secondary=personaddress, backref=db.backref('person', lazy='dynamic'))

class Address(db.Model):
    __tablename__ = "address"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)
Run Code Online (Sandbox Code Playgroud)

要求

现在我想创建一个包含表单的单个页面来实现以下功能:

  • 添加/编辑/删除某个人
  • 添加/编辑/删除地址
  • 添加/编辑/删除人与地址之间的关系

重要要求:使用QuerySelectField,我可以为一个人选择现有地址.但我想以相同的形式添加新地址.

我已经model_form使用了FormField用于连接表的主要模型和子表单,但我无法弄清楚如何更新包括外键关系在内的所有内容.该页面应该有一个提交按钮,用于显示所有表单和子表单.

问题

  1. 如何在Flask中实现上述要求?
  2. 这是多对多场景,Django可以通过其管理界面更轻松地处理这些场景吗?

python sqlalchemy flask flask-wtforms

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

如何/在何处存储云应用程序的临时文件和日志?

我正在开发一个具有相当复杂架构的Python/MySQL云应用程序.操作此系统(当前)生成临时文件(纯文本,YAML)和日志文件,我打算将它们存储在文件系统上.

但是,我们的预期云运营商仅为应用程序提供临时的非持久性文件系统.这意味着存储临时文件和日志文件的初始方法将不起作用.

必须有一个标准的方法来解决这个我不知道的问题.我不想像S3那样使用对象存储,因为它会扩展当前的堆栈并增加复杂性.但我可以在具有相同提供程序的其他服务器上安装其他专用应用程序(如果有任何用于此目的的内容).唯一的限制是它必须是PHP,Python,MySQL.

一般性问题:当没有可用的永久文件系统时,存储文件的标准方法是什么?

对于我的具体案例:是否有任何使用Python和/或MySQL的解决方案,它实现简单快捷?这是Redis的用例吗?

python mysql cloud storage redis

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

使用Flask在Python中实现面包屑?

我想要面包屑导航我的Flask应用程序.一个选项可能是使用像bread.py这样的通用Python模块:

面包对象接受url字符串并授予对url crumbs(部分)或url链接(每个crumb的href列表)的访问权限.

bread.py从url路径生成breadcrumb,但我希望breadcrumb的元素是以前访问过的页面的标题和链接.

在Flask中,也许这可以使用装饰器或通过扩展@route装饰器来完成.

有没有办法让每次调用route()添加页面的标题和链接(在装饰的函数/类中定义@route)到面包屑?还有其他方法吗?为Flask实现的任何面包屑示例?

python navigation breadcrumbs flask

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

如何控制用户对键值数据库中记录的访问?

我有一个访问大量JSON数据的Web应用程序.

我想使用键值数据库来存储Web应用程序的不同用户(不是数据库用户)拥有/共享的JSON数据.每个用户应该只能访问他们拥有或共享的记录.

在关系数据库中,我会Owner在记录表中添加一列,或者在单独的表中管理共享所有权,并在应用程序端检查访问权限(Python).对于关键价值商店,我想到了两种方法.

用户ID作为密钥的一部分

如果我使用密钥USERID_RECORDID然后编写代码来检查USERID访问记录之前怎么办?这是一个好主意吗?它不适用于用户之间共享的记录.

用户ID作为值的一部分

我可以USERIDs在值数据中存储一个或多个,并检查数据是否包含尝试访问记录的用户的ID.性能可能比将用户ID作为密钥的一部分要慢,但共享所有权是可能的.

什么是典型的模式来做我想做的事情?

python database authorization key-value nosql

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

SqlAlchemy:过滤以匹配列表中的所有值而不是任何值?

我想查询一个结表列的值aID匹配ID列表的所有值ids=[3,5]bID.

这是我的联结表(JT):

 aID    bID
   1      1
   1      2
   2      5
   2      3
   1      3
   3      5
Run Code Online (Sandbox Code Playgroud)

我有这个问题: session.query(JT.aID).filter(JT.bID.in_(ids)).all()

该查询返回的aID1,2并且3因为它们都与行的任一35bID列.我希望查询返回的是2因为这是唯一aID具有列中ids列表的所有值的值bID.

不知道如何更好地解释问题,但我怎样才能得到结果?

python mysql sql sqlalchemy

7
推荐指数
2
解决办法
1万
查看次数

如何在 Jinja2 中打印 \n 字符

我在 Python 中有以下字符串:thestring = "123\n456"

在我的 Jinja2 模板中,我使用的{{thestring}}输出是:

123
456

我能让 Jinja2 打印精确表示123\n456(包括\n)的唯一方法是转义thestring = "123\\n456"

有没有其他方法可以直接在模板中完成此操作?

python jinja2 flask

5
推荐指数
2
解决办法
2万
查看次数