sqlite3本身并没有像pymysql一样原生提供字典形式的游标。
因此要实现这一功能,要重新对应的函数;
参考了以下文章
https://blog.csdn.net/whatday/article/details/90905435
返回值包含中文要将数据库连接的text_factory属性设置为str;
参考了以下文章
https://my.oschina.net/gaunthan/blog/818901
该python3 脚本 如下
#!/usr/bin/python
# -*- coding:utf-8 -*-
from datetime import datetime
import os
import sqlite3
#import sys
#reload(sys)
#sys.setdefaultencode('utf8')
def dict_factory(cursor, row):
d = {}
for idx, col in enumerate(cursor.description):
d[col[0]] = row[idx]
return d
conn = sqlite3.connect('Alarm.db')
conn.text_factory = str
conn.row_factory = dict_factory
print ("Open database successfully")
cursor = conn.cursor()
this_sql = ("SELECT * from alarm_info "
"where "
"timestamp like '%s' "
"AND "
"metric like '%s';")
today = datetime.now().strftime("%Y-%m-%d")
this_metric = '%df.bytes.free.percent%'
cursor.execute(str(this_sql) % ('%'+today+'%', this_metric))
results = cursor.fetchall()
for row in results:
print(row)
this_str = str(row['endpoint'])
print(this_str)
cursor.close()
#conn.commit()
conn.close()