如何在Flask Mysqldb中遍历多个数据库服务器

时间:2018-08-16 13:45:24

标签: python mysql flask

我希望遍历2个数据库服务器,以获取通过form(example.html)提交的查询的匹配项,即迭代配置值(<h2 class="modal-title">Enter Code:</h2> <div class="modal-body"> <input id="myInput" type="text"> <button class="btn btn-primary outline" onclick="codeValidation()">Enter</button> <div id="codeErrorMSG" style="display: none"> <ul> <li> <div class="qsvideo-module-number"> <strong> 3 </strong> </div> <a onclick="ga('send', { 'hitType' : 'event', 'eventCategory' : 'Web Service Tracking', 'eventAction' : 'Seminars - QSCBP Access Page', 'eventLabel' : 'Module 3', 'eventValue' : 0 } );" href="/downloads/video/ESKILQSCBP.1.17.1/QSCBPM3/index.html" target="_blank" class="qsvideo-module-title">Learning About Your Business and Why It Matters</a> <div class="qsvideo-module-runtime"> <strong> 2:21 </strong> </div> </li> </ul> </div> </div>)。如果没有从第一个数据库服务器检索到任何数据,则需要向第二个数据库服务器查询。当我尝试列出要遍历mysql主机的列表时,
它向我显示app.config['MYSQL_HOST'] = db['mysql_host']

以下是我在TypeError: list indices must be integers or slices, not str中设置一台数据库服务器时的工作代码。 app.config['MYSQL_HOST'] = db['mysql_host']文件包含数据库服务器和配置信息。

db.yaml

我仅将db.yaml用于数据库用户名,密码和数据库服务器。

db.yaml

mysql_user:“ xxxx” mysql_password:'xxxxx' mysql_db:“ xxxxx”

我仅使用yamlsample.yaml来遍历数据库主机。

yamlsample.yaml

  • 192.168.1.10
  • 192.168.1.11

1 个答案:

答案 0 :(得分:0)

来自PyYaml documents

  

函数yaml.load将YAML文档转换为Python对象。

>>> yaml.load("""
  ... - Hesperiidae
  ... - Papilionidae
  ... - Apatelodidae
  ... - Epiplemidae
  ... """)

['Hesperiidae', 'Papilionidae', 'Apatelodidae', 'Epiplemidae']

>>> yaml.load(u"""
  ... hello: Привет!
  ... """)    # In Python 3, do not use the 'u' prefix

 {'hello': u'\u041f\u0440\u0438\u0432\u0435\u0442!'}

因此,当您查看它时,第一个示例输出是python List对象,第二个示例是字典,具体取决于传递给load的参数,在您的情况下,该示例将被转换为列表,因为这就是错误的意思:

TypeError: list indices must be integers or slices, not str

因此,您不能使用字符串为列表建立索引,以解决此传递yaml.load内容的问题,无法将其转换为dict(修改db.yaml文件)。 / p>

还有一点要指出的是,最好使用不运行yaml文件中任意代码的函数yaml.safe_load,这在从不受信任的来源打开文件时很有用。