我有这样的 PythonEnum类:
from enum import Enum
class Seniority(Enum):
Intern = "Intern"
Junior_Engineer = "Junior Engineer"
Medior_Engineer = "Medior Engineer"
Senior_Engineer = "Senior Engineer"
Run Code Online (Sandbox Code Playgroud)
在MYSQL数据库中,资历ENUM列有值“实习生”、“初级工程师”、“中级工程师”、“高级工程师”。
问题是我收到一个错误:
LookupError: "Junior Engineer" is not among the defined enum values
Run Code Online (Sandbox Code Playgroud)
当我调用查询时发生此错误:
UserProperty.query.filter_by(full_name='John Doe').first()
Run Code Online (Sandbox Code Playgroud)
seniority是UserProperty模型中的枚举属性。
class UserProperty(db.Model):
...
seniority = db.Column(db.Enum(Seniority), nullable=True)
...
Run Code Online (Sandbox Code Playgroud)
对于这个类,我使用marshmallow Schema和EnumField来自marshmallow_enum包定义了 Schema 类:
class UserPropertySchema(Schema):
...
seniority = EnumField(Seniority, by_value=True)
...
Run Code Online (Sandbox Code Playgroud)
在这种情况下该怎么办,因为我无法定义带有空格的python类属性名称。如何强制python使用已定义属性的值而不是属性名称?
我有一个页面,其中有包含用户数据和每一行的表格(每个用户都有自己的名片,这是一个引用存储在服务器上的 pdf 的标签。
<td class="business_card">
<a href="/static/users_documents/9/business_card.pdf" target="_blank">
<img src="/static/images/business_card.png" name="business_card" alt="business_card_image">
</a>
</td>
Run Code Online (Sandbox Code Playgroud)
当用户发送 post 请求时,服务器上以前的 pdf 文件被删除并创建新的 pdf。但是,问题是浏览器缓存旧版本的文件,我每次都必须按CTRL+F5硬刷新缓存,然后我才能从服务器而不是缓存中看到文件。
我是否需要使用 JavaScript 来清除缓存?
另外,我对页面的标记引用如下:
https://192.168.2.244/static/users_documents/9/business_card.pdf
Run Code Online (Sandbox Code Playgroud)
该页面的 html 是由 Firefox 创建的,用于显示我的 pdf 文件。
一些可能有帮助的附加信息是我在 Ubuntu 16.04.3 上使用 Nginx 服务器。
我正在尝试使用 Flask-sqlalchemy 查询动态创建 order_by 语句。
这是对我的 PurchaseOrder 方法的调用:
pos = PurchaseOrder.get_all_pos(column_order=['id', 'due_date'])
Run Code Online (Sandbox Code Playgroud)
column_order 可以有一个或多个列,我们用来对查询结果进行排序。
class PurchaseOrder(PurchaseOrderDB):
@classmethod
def get_all_pos(cls, **kwargs):
columns = kwargs.pop('column_order', '')
columns_order = [getattr(cls, column) for column in columns]
if len(columns_order) != 0:
pos = cls.query.order_by(columns_order).all()
else:
pos = cls.query.all()
return pos
Run Code Online (Sandbox Code Playgroud)
columns_order 是 InstrumentedAttributes 的列表,当我将该列表传递给 order_by() 方法时,我得到了预期的以下错误:
sqlalchemy.exc.ArgumentError: SQL expression object or string expected, got object of type <class 'list'> instead
Run Code Online (Sandbox Code Playgroud)
那么,当我们不知道传入多少列时,是否有其他方法可以动态创建 order_by 呢?在这种情况下,查询应如下所示:
pos = cls.query.order_by(cls.id, cls.due_date).all()
Run Code Online (Sandbox Code Playgroud)