擅长:python、mysql、java
<p>要将json插入数据库,不要将其转换为Python对象;只需将字符串存储为从文件中读取的字符串。在</p>
<pre><code>with open(peripheralsJsonFile).read() as f:
peripheralsInfo = f.read()
myquery = """INSERT INTO hw_info(hostname, peripheralsInfo) VALUES(%s,%s)"""
cursor.execute(myquery, (hostname, peripheralsInfo))
</code></pre>
<p>如果以后想在程序中使用数据,可以通过<code>json.loads()</code>传递SELECT查询中的字符串,使其成为Python对象。在</p>
<p><strong>编辑</strong></p>
<p>这里有两句话。在</p>
<ol>
<li><p><code>prefipheralsInfo = open(peripheralsJsonFile).read()</code>在读取后没有正确关闭文件,因此我在幕后使用了一个<a href="https://jeffknupp.com/blog/2016/03/07/python-with-context-managers/" rel="nofollow noreferrer">context manager</a>来处理这个问题。</p></li>
<li><p>使用Python的字符串插值来格式化查询字符串。这使得您的程序容易受到<a href="https://www.owasp.org/index.php/SQL_Injection" rel="nofollow noreferrer">SQL injection attacks</a>的攻击。在我的示例中,我使用<a href="https://security.openstack.org/guidelines/dg_parameterize-database-queries.html" rel="nofollow noreferrer">parameterized query</a>来规避该漏洞。参数还有助于确保您的输入作为正确的数据类型传递给您的数据库。</p></li>
</ol>