Python 使用.first()方法没有结果

Python 使用.first()方法没有结果,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,尝试基于.first()方法处理查询结果时出错,而.all()方法返回预期值 @app.route('/getAlphabet') def getElement(): abc=["abc","def","ghi"] newTest=Test(idU1=json.dumps(abc)) db.session.add(newTest) db.session.commit() entryString = testSchema.dumps(Test.query.w

尝试基于.first()方法处理查询结果时出错,而.all()方法返回预期值

@app.route('/getAlphabet')
def getElement():
    abc=["abc","def","ghi"]
    newTest=Test(idU1=json.dumps(abc))
    db.session.add(newTest)
    db.session.commit()
    entryString = testSchema.dumps(Test.query.with_entities(Test.idU1).filter_by(idm=1).first())
    return entryString 

在浏览器中查看的结果是[{}],而.all()生成预期的结果[{“idU1”:“[\“abc\”、\“def\”、\“ghi\”]“}]

有人有过同样的问题吗

设置数据库的我的代码:

app = Flask(__name__)
app.config["DEBUG"] = True

SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
    username="Ehrismann",
    password="abcdefgh",
    hostname="Ehrismann.mysql.pythonanywhere-services.com",
    databasename="Ehrismann$default",
)

app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI  # connection specs
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299  # don't care
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False

db = SQLAlchemy(app)  # actually make connection
ma = Marshmallow(app)  # instantiate MarshmallowObject


class Test(db.Model):  # new Table: comment

    __tablename__ = "test"
    idm = db.Column(db.Integer, primary_key=True)  # new Column
    idU1=db.Column(db.String(100), nullable=False)

class TestSchema(ma.ModelSchema):
    class Meta:
        model=Test

testSchema = TestSchema(many=True)


模式设置为many=True,这意味着marshmallow需要一个测试模型列表。当您使用
.first()
sqlalchemy时,将返回一个不在列表中的单一测试模型。Marshamlow在无法正确序列化某些内容时的预期行为是给您一个空对象。这就是为什么你最终得到了
[{}]
谢谢,没想到能那么容易地解决这个问题。