我希望遍历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用于数据库用户名,密码和数据库服务器。
mysql_user:“ xxxx” mysql_password:'xxxxx' mysql_db:“ xxxxx”
我仅使用yamlsample.yaml来遍历数据库主机。
答案 0 :(得分:0)
函数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
,这在从不受信任的来源打开文件时很有用。