兩臺計算機在同一瀏覽器版本(chrome 58.0.3029.110(64位))上運行Flask 0.12.2版。計算機返回一個包含對象的列表是ubuntu 14.04,其中包含元組的是運行osx 10.11.6。瓶頸Jsonify返回一臺計算機上的對象列表和包含另一臺計算機上的元組的列表
這是傳遞到序列化的jsonify函數的數據的示例性數據 [( '代碼1',[ 'website1.com']),( '代碼2',[ 'website2.com'])]
osx機器瀏覽器控制檯的輸出是[[「Code1」,[「website1.com」]],[「Code2」,[「website2.com」]]]
vs [{「code」 :「Code1」,地點:[「website1.com」]},{「code」:「Code2」,地點:[「website2.com」]}]
編輯: 因此,重現的步驟是如下。使用表測試表創建一個test_db。
createdb test_db
psql
=# create table testtable (code1 text, code2 text);
所需的兩個文件命名爲模型文件,test_model.py
from test_file import db
class myModel(db.Model):
__tablename__ = 'testtable'
code1 = db.Column(db.Text, primary_key=True)
code2 = db.Column(db.Text)
def __init__(self, co1, co2):
self.code1 = co1
self.code2 = co2
和test_file.py
from flask import jsonify, Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://localhost:5432/test_db'
db = SQLAlchemy(app)
import test_model
@app.route("/")
def b():
a = [('Code1', ['website1.com']), ('Code2', ['website2.com'])]
myModel = test_model.myModel("website1.com", "website2.com")
myModel = test_model.myModel("website3.com", "website4.com")
db.session.add(myModel)
db.session.commit()
query = test_model.myModel.query.with_entities(test_model.myModel.code1).all()
print("my model", query, type(query))
foo = jsonify(query)
print(foo)
return foo
#runs servlet, debug=true if you want to test running code
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
必要的點子庫psycopg2,燒瓶,燒瓶,SQLAlchemy的
當運行python test_file.py沒有simplejson安裝瀏覽器在localhost:5000 ou tputs
[
[
"website3.com"
],
[
"website3.com"
],
[
"website3.com"
],
[
"website3.com"
],
[
"website3.com"
],
[
"website3.com"
]
]
與simplejson運行安裝時,其輸出
[
{
"code1": "website3.com"
},
{
"code1": "website3.com"
},
{
"code1": "website3.com"
},
{
"code1": "website3.com"
},
{
"code1": "website3.com"
},
{
"code1": "website3.com"
},
{
"code1": "website3.com"
}
]
總而言之,這是一些關於simplejson和燒瓶SQLAlchemy的可能之間的互動?只是發生在它使用燒瓶
給定相同的輸入數據,這是不可能的。請[edit]包含[mcve]。您是否嘗試在兩臺機器上全新部署? – davidism
目前正在研究一個例子,它已經在兩臺機器上都部署了新鮮。由於這是一個更大的項目,可能需要一點時間來重現相同的問題,但我正在努力。 – Bard117
請仍然發佈[mcve]。如果你說的話其實是真的,那Flask中的一個*巨大的錯誤就是我們需要解決的。但我有點懷疑simplejson實際上是在返回一些不同的東西,我們永遠支持這個,沒有任何問題。 – davidism