sqlite.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/usr/bin/env python3
  2. # -*- coding: UTF-8 -*-
  3. import sqlite3
  4. class DBSqlite:
  5. """
  6. sqlite数据库操作工具类
  7. database: 数据库文件地址,例如:db/mydb.db
  8. """
  9. _connection = None
  10. def __init__(self, database):
  11. # 连接数据库
  12. self._connection = sqlite3.connect(database)
  13. def _dict_factory(self, cursor, row):
  14. d = {}
  15. for idx, col in enumerate(cursor.description):
  16. d[col[0]] = row[idx]
  17. return d
  18. def execute(self, sql, args=[], result_dict=True, commit=True) -> list:
  19. """
  20. 执行数据库操作的通用方法
  21. Args:
  22. sql: sql语句
  23. args: sql参数
  24. result_dict: 操作结果是否用dict格式返回
  25. commit: 是否提交事务
  26. Returns:
  27. list 列表,例如:
  28. [{'id': 1, 'name': '张三'}, {'id': 2, 'name': '李四'}]
  29. """
  30. if result_dict:
  31. self._connection.row_factory = self._dict_factory
  32. else:
  33. self._connection.row_factory = None
  34. # 获取游标
  35. _cursor = self._connection.cursor()
  36. # 执行SQL获取结果
  37. _cursor.execute(sql, args)
  38. if commit:
  39. self._connection.commit()
  40. data = _cursor.fetchall()
  41. _cursor.close()
  42. return data
  43. if __name__ == '__main__':
  44. # db = DBSqlite('browser.db')
  45. # pycomm.toLog(db.execute("select name from sqlite_master where type=?", ['table']))
  46. # pycomm.toLog(db.execute("pragma table_info([user])"))
  47. # pycomm.toLog(execute("insert into user(id, name, password) values (?, ?, ?)", [2, "李四", "123456"]))
  48. # pycomm.toLog(db.execute("select id, name userName, password pwd from user"))
  49. # pycomm.toLog(db.execute("select * from user", result_dict=False))
  50. # pycomm.toLog(db.execute("select * from user"))
  51. pass