小编Dig*_*tal的帖子

使用Python枚举定义SQLAlchemy枚举列会引发"ValueError:not a enum"

我试图按照这个例子在一个使用Python Enum类型的表中有一个枚举列.我定义了枚举,然后将其传递给列,如示例所示,但我明白了ValueError: <enum 'FruitType'> is not a valid Enum.如何使用Python枚举正确定义SQLAlchemy枚举列?

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import enum

app = Flask(__name__)
db = SQLAlchemy(app)

class FruitType(enum.Enum):
    APPLE = "Crunchy apple"
    BANANA = "Sweet banana"

class MyTable(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    fruit_type = db.Column(enum.Enum(FruitType))
Run Code Online (Sandbox Code Playgroud)
File "why.py", line 32, in <module>
    class MyTable(db.Model):
  File "why.py", line 34, in MyTable
    fruit_type = db.Column(enum.Enum(FruitType))
  File "/usr/lib/python2.7/dist-packages/enum/__init__.py", line 330, in __call__
    return cls.__new__(cls, value)
  File "/usr/lib/python2.7/dist-packages/enum/__init__.py", line …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-sqlalchemy

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

在SQLAlchemy中访问联接查询结果

如果我有:

query = db.session.query(Food, Person).filter(Food.id == Person.favourite_food)
for row in db.session.execute(query)
    print row
Run Code Online (Sandbox Code Playgroud)

我得到的第一个打印的输出是:

(1, u'Alice', 25, u'F', u'z', None, False, 1, u'icecream', 1, None, False)
(5, u'Bob', 38, u'M', u'z', None, False, 3, u'pizza', 1, None, False)
Run Code Online (Sandbox Code Playgroud)

我该怎么做:

print row.name, row.gender # <-- how do I do this?
Run Code Online (Sandbox Code Playgroud)

结果似乎不再具有列名。

编辑:还有一种方法可以只用一行来序列化查询结果,就像

return Response(json.dumps(query.results), mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)

python django sqlalchemy flask-sqlalchemy

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

Flask和WTForms:如何使用多个提交按钮制作表单?

想象一下,我需要建立一个这样的旅行计划表:

Going from [_Picadily_Circus____]
Going to [_Marylebone_____]
(Starting by) (Arriving by) [5]:[30][pm]
Run Code Online (Sandbox Code Playgroud)

两者(开始)(到达)是提交按钮.这个例子是人为的,以显示一个双按钮用例,所以我们不讨论可用性.

我如何使用Flask和WTForms做到这一点?

如何查看实际按下了哪个按钮?

python flask wtforms flask-wtforms

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

Python 2:使用字符串解释进行枚举的最优雅/Pythonic 方法是什么?

我想要一个带有预定义的单字符常量(适合存储在数据库中)和字符串解释的枚举。这是我的想法:

class Fruits(Enum):
    APPLE = 'A'
    PEAR = 'P'
    BANANA = 'B'
    def __unicode__(self):
        if self == APPLE: return "Crunchy Apple"
        if self == PEAR: return "Sweet Pear"
        if self == BANANA: return "Long Banana"
Run Code Online (Sandbox Code Playgroud)

fruit = Fruits.APPLE
print fruit.__unicode__()
Run Code Online (Sandbox Code Playgroud)

给出

AttributeError: 'unicode' object has no attribute '__unicode__'
Run Code Online (Sandbox Code Playgroud)

除此之外,还必须有一种更优雅的方式来做到这一点

怎样才能做得更好呢?

python enums

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