【发布时间】:2020-04-07 08:50:53
【问题描述】:
我是 python 编程的新手,想在 pythonanywhere.com 上用 flask 建立一个 MySQL 数据库。我使用 Marshmallow-sqlalchemy 从/向数据库执行读/写过程。现在,我对以下复杂的阅读过程感到有些困惑:
@app.route('/getElement')
def getElement():
idU1=["abc","def","ghi"]
newTest=Test(idU1=json.dumps(idU1))
db.session.add(newTest)
db.session.commit()
entryString = test_schema.dumps(Test.query.with_entities(Test.idU1).filter_by(idm=1).all()) #Browser views [{"idU1": "[\"abc\", \"def\", \"ghi\"]"}]
entryList = json.loads(entryString)
entryDict = entryList[0] #Browser views {"idU1": "[\"abc\", \"def\", \"ghi\"]"}
valueString = entryDict['idU1']
valueList = json.loads(valueString)
result = valueList[2]
return json.dumps(result) #Browser views "ghi", which again should be loaded for processing
这就是我设置文件的方式:
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
test_schema = TestSchema(many=True)
那么,关于如何简化我的代码有什么想法吗?
【问题讨论】:
-
与您的问题没有直接关系:变量和函数名称应遵循
lower_case_with_underscores样式。 -
我一整天都喜欢这个家伙。所以同意不同意@AlexanderCécile
-
@itypewithmyhands 同意 PEP 8 和绝大多数库,包括 Flask itself?这样做并不违法,但这些风格指南的存在是有原因的,不是吗?
-
好吧,老实说,我不得不承认,无论哪种方式,我都应该选择一种风格。在一个文件中使用 test_schema 和 camelCase 变量当然应该得到改进。
-
@AlexanderCécile 我也不喜欢
c#方法中花括号的换行符。也许我只是一个失败的事业。无论如何,@Mxrsxpxxl 是对的,他们绝对应该选择一种风格并坚持下去:)
标签: python mysql flask flask-sqlalchemy marshmallow-sqlalchemy