<p>把这乱七八糟的东西换掉</p>
<pre><code>#UPDATED with column_names
k=0
for i in jsonobject:
# Connect to the database
conn = pymysql.connect(host='10.20.3.4', port=3306, user='root', passwd='', db='python_db')
try:
with conn.cursor() as cursor:
column_names = ['col1','col2','col3',...'col11']
column_names_str = ', '.join(column_names)
binds_str = ', '.join('%s' for _ in range(len(column_names)))
sql=("INSERT INTO `json_test` ({column_names})" \
" VALUES({binds})"
.format(column_names=column_names_str,binds=binds_str))
for data_dict in jsonobject:
values = [data_dict[column_name]
for column_name in column_names]
cursor.execute(sql, values)
print("Insert successfull!")
#UPDATED
k+=1
conn.commit()
finally:
conn.close()
return "Insert successful"
</code></pre>
<p>与</p>
^{pr2}$
<hr/>
<h2>总和</h2>
<ul>
<li><code>k</code>对象是冗余的</li>
<li>另外,名称<code>i</code>不清楚,让我觉得它是某种索引,而实际上它不是:它是一个<code>dict</code>对象</li>
<li>我们不需要从<code>jsonobject</code>为每个对象创建连接,因为这是一个昂贵的操作</li>
<li>我们不需要在每次迭代中创建<code>sql</code>对象(它保持不变)</li>
<li>将列名存储在<code>list</code>/<code>tuple</code>中可以避免在查询和值提取中两次写入它们。在</li>
<li><p>正在创建绑定<code>str</code></p>
<pre><code>%s, %s, ...
</code></pre>
<p>当我们错过/添加了太多绑定别名时,根据列数动态地保存我们的打印错误</p></li>
</ul>