sqlite3 设置返回值为字典类型
# 0. pip install pymysql # 1. 导入 pymysql import pymsql # 2. 创建一个数据库连接对象 # 3. 创建游标 cursor = conn.cursor() # 4. SQL执行 cursor.execute(sql) # 5. DML提交事务 conn.commit # 6. 关闭游标 cursor.close() # 7. 关闭连接 cursor.close() import sqlite3 # from Silence.utils.log_util import logger """ sqlite是一种嵌入式数据库,它的数据库就是一个文件。 由于SQLite本身是用C写的,而且体积很小,所以经常被集成到各种应用程序中,甚至在IOS和Android的APP中都可以集成。 Python中内置了SQLite3,连接到数据库后,需要打开游标Cursor,通过Cursor执行SQL语句,然后获得执行结果, Python定义了一套操作数据库的API接口,任何数据库要连接到Python,只需要提供符合Python标准的数据库驱动即可. """ class DataBase: def dict_factory(cursor, row): # 将游标获取的数据处理成字典返回 d = {} for idx, col in enumerate(cursor.description): d[col[0]] = row[idx] return d def excute(self, sql): """ 获取mysql的连接 :return: 返回一个数据库连接对象 @return: """ # 创建一个连接对象 conn = sqlite3.connect("E:\\bysms\\resource\db.sqlite3") # 使得查询结果以字典形式返回. 就是在连接数据库后,将 db.row_factory 方法重写为 dict_factory 方法即可 conn.row_factory = DataBase.dict_factory # 创建一个游标cursor cursor = conn.cursor() # 执行一条sql 语句 cursor.execute(sql) # try: # logger.info(f'查询数据:{sql}') # cursor.execute(sql) # except BaseException as e: # logger.error(f'查询失败{e.args}') # else: # logger.info('查询成功') # 获取结果集 data = cursor.fetchall() # 关闭 游标 cursor.close() # 关闭 连接 conn.close() return data if __name__ == '__main__': sql = 'select * from common_customer' result = DataBase().excute(sql) print(result)
运行结果:
[{'id': 29, 'name': '南京中医院1', 'phonenumber': '2551867851', 'address': '江苏省-南京市-秦淮区-汉中路-501'}, {'id': 30, 'name': '南京中医院2', 'phonenumber': '2551867852', 'address': '江苏省-南京市-秦淮区-汉中路-502'}, {'id': 31, 'name': '南京中医院3', 'phonenumber': '2551867853', 'address': '江苏省-南京市-秦淮区-汉中路-503'}, {'id': 32, 'name': '太原中医院1', 'phonenumber': '0351867851', 'address': '山西省-太原市-杏花岭区-解放路-301'}, {'id': 33, 'name': '太原中医院2', 'phonenumber': '0351867852', 'address': '山西省-太原市-万柏林区-建设路-302'}, {'id': 34, 'name': '太原中医院3', 'phonenumber': '0351867853', 'address': '山西省-太原市-尖草坪区-前进路-303'}, {'id': 35, 'name': '西安中医院1', 'phonenumber': '029867851', 'address': '陕西省-西安市-雁塔区-解放路-101'}, {'id': 36, 'name': '西安中医院2', 'phonenumber': '029867852', 'address': '陕西省-西安市-长安区-建设路-102'}, {'id': 37, 'name': '西安中医院3', 'phonenumber': '029867853', 'address': '陕西省-西安市-莲湖区-前进路-103'}, {'id': 38, 'name': '郑州人民医院1', 'phonenumber': '0371867851', 'address': '河南省-郑州市-中原区-解放路-201'}, {'id': 39, 'name': '郑州人民医院2', 'phonenumber': '0371867852', 'address': '河南省-郑州市-金水区-建设路-202'}, {'id': 40, 'name': '郑州人民医院3', 'phonenumber': '0371867853', 'address': '河南省-郑州市-上街区-前进路-203'}, {'id': 41, 'name': '南京人民医院1', 'phonenumber': '2551867811', 'address': '江苏省-南京市-秦淮区-汉中路-5011'}, {'id': 42, 'name': '南京人民医院2', 'phonenumber': '2551867812', 'address': '江苏省-南京市-秦淮区-汉中路-5012'}, {'id': 43, 'name': '南京人民医院3', 'phonenumber': '2551867813', 'address': '江苏省-南京市-秦淮区-汉中路-5013'}, {'id': 65, 'name': '陕西中医院-修改1', 'phonenumber': '13345678888', 'address': '陕西中医院-修改1'}, {'id': 66, 'name': '陕西省中医医院1', 'phonenumber': '13345679934', 'address': '西安市钟楼1'}, {'id': 67, 'name': '陕西省中医医院1', 'phonenumber': '13345679934', 'address': '西安市钟楼1'}, {'id': 68, 'name': '陕西省中医医院1', 'phonenumber': '13345679934', 'address': '西安市钟楼1'}, {'id': 69, 'name': '陕西省中医医院1', 'phonenumber': '13345679934', 'address': '西安市钟楼1'}, {'id': 70, 'name': '陕西省中医医院1', 'phonenumber': '13345679934', 'address': '西安市钟楼1'}, {'id': 71, 'name': '陕西省中医医院1', 'phonenumber': '13345679934', 'address': '西安市钟楼1'}, {'id': 72, 'name': '陕西省中医医院1', 'phonenumber': '13345679934', 'address': '西安市钟楼1'}, {'id': 73, 'name': '陕西省中医医院1', 'phonenumber': '13345679934', 'address': '西安市钟楼1'}, {'id': 74, 'name': '陕西省中医医院1', 'phonenumber': '13345679934', 'address': '西安市钟楼1'}, {'id': 75, 'name': '陕西中医院-修改2', 'phonenumber': '2222222222222', 'address': '陕西中医院-修改2'}, {'id': 76, 'name': '陕西中医院-修改2', 'phonenumber': '2222222222222', 'address': '陕西中医院-修改2'}, {'id': 77, 'name': '陕西中医院-修改2', 'phonenumber': '2222222222222', 'address': '陕西中医院-修改2'}, {'id': 78, 'name': '陕西中医院-修改2', 'phonenumber': '2222222222222', 'address': '陕西中医院-修改2'}, {'id': 79, 'name': '陕西中医院-修改2', 'phonenumber': '2222222222222', 'address': '陕西中医院-修改2'}, {'id': 80, 'name': '陕西中医院-修改2', 'phonenumber': '2222222222222', 'address': '陕西中医院-修改2'}, {'id': 81, 'name': '陕西中医院-修改2', 'phonenumber': '2222222222222', 'address': '陕西中医院-修改2'}, {'id': 82, 'name': '陕西中医院-修改2', 'phonenumber': '2222222222222', 'address': '陕西中医院-修改2'}, {'id': 83, 'name': '陕西中医院-修改2', 'phonenumber': '2222222222222', 'address': '陕西中医院-修改2'}, {'id': 84, 'name': '陕西中医院-修改2', 'phonenumber': '2222222222222', 'address': '陕西中医院-修改2'}, {'id': 85, 'name': '陕西中医院-修改2', 'phonenumber': '2222222222222', 'address': '陕西中医院-修改2'}, {'id': 86, 'name': '好好医院', 'phonenumber': '001', 'address': '武汉市桥西医院北路'}, {'id': 87, 'name': '好好医院', 'phonenumber': '002', 'address': '武汉市桥西医院北路'}, {'id': 88, 'name': '好好医院', 'phonenumber': '003', 'address': '武汉市桥西医院北路'}, {'id': 89, 'name': '好好医院', 'phonenumber': '004', 'address': '武汉市桥西医院北路'}, {'id': 90, 'name': '好好医院', 'phonenumber': '005', 'address': '武汉市桥西医院北路'}, {'id': 91, 'name': '好好医院', 'phonenumber': '006', 'address': '武汉市桥西医院北路'}, {'id': 92, 'name': '好好医院', 'phonenumber': '007', 'address': '武汉市桥西医院北路'}, {'id': 93, 'name': '好好医院', 'phonenumber': '008', 'address': '武汉市桥西医院北路'}, {'id': 94, 'name': '好好医院', 'phonenumber': '009', 'address': '武汉市桥西医院北路'}, {'id': 95, 'name': '好好医院', 'phonenumber': '010', 'address': '武汉市桥西医院北路'}, {'id': 96, 'name': '001医院', 'phonenumber': '1353369001', 'address': '武汉市桥西医院北路'}, {'id': 97, 'name': '002医院', 'phonenumber': '1353369002', 'address': '武汉市桥西医院北路'}, {'id': 98, 'name': '003医院', 'phonenumber': '1353369003', 'address': '武汉市桥西医院北路'}, {'id': 99, 'name': '004医院', 'phonenumber': '1353369004', 'address': '武汉市桥西医院北路'}, {'id': 100, 'name': '005医院', 'phonenumber': '1353369005', 'address': '武汉市桥西医院北路'}, {'id': 101, 'name': '006医院', 'phonenumber': '1353369006', 'address': '武汉市桥西医院北路'}, {'id': 102, 'name': '007医院', 'phonenumber': '1353369007', 'address': '武汉市桥西医院北路'}, {'id': 103, 'name': '008医院', 'phonenumber': '1353369008', 'address': '武汉市桥西医院北路'}, {'id': 104, 'name': '009医院', 'phonenumber': '1353369009', 'address': '武汉市桥西医院北路'}, {'id': 105, 'name': '010医院', 'phonenumber': '1353369010', 'address': '武汉市桥西医院北路'}]
钟声敲响了日落,柏油路跃过山坡,一直通向北方的是我们想象,长大后也未曾经过~