【python 问题解决】 ---- sqlite 查询数据返回的是元组,转换为字典

1. 问题

  1. python 的 sqlite 查询数据返回的是元组类型;
  2. 返回到前端就是二维数组;
1.1 效果图
1.1.1 后端打印

在这里插入图片描述

1.1.2 前端打印

在这里插入图片描述

2. 解决办法

2.1 重写连接对象的 row_factory 方法
  # 数据转字典
  def dict_factory(self, cursor, row):
    data = {}
    for idx, col in enumerate(cursor.description):
      data[col[0]] = row[idx]
    return data

  # 查询数据
  def query(self,sql):
    with self.con:
      self.con.row_factory = self.dict_factory
      self.cur = self.con.cursor()
      self.cur.execute(sql)
      rows = self.cur.fetchall()
      return rows

3. 总结

  1. 重写 row_factory 方法后,查询数据返回的就是字典!
  2. 参考:学习笔记—SQLite3基本命令
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python 中使用 SQLite3 的时候,可以使用占位符来防止 SQL 注入攻击。占位符是 SQL 查询语句中的一个特殊标记,它用于表示需要动态替换的值。 SQLite3 中支持两种类型的占位符: - 问号占位符(?):用于表示一个参数。 - 命名占位符(:name):用于表示一个具有名称的参数。 下面是一个使用问号占位符的例子: ```python import sqlite3 # 连接数据库 conn = sqlite3.connect('example.db') # 创建游标 cur = conn.cursor() # 执行查询语句 cur.execute('SELECT * FROM users WHERE name=?', ('Alice',)) # 获取查询结果 result = cur.fetchall() # 关闭游标和连接 cur.close() conn.close() ``` 在上面的例子中,我们使用问号占位符来表示查询语句中的参数。`cur.execute` 方法的第二个参数是一个元组,其中包含需要替换问号占位符的值。在这个例子中,我们查询了名字为 "Alice" 的用户。 下面是一个使用命名占位符的例子: ```python import sqlite3 # 连接数据库 conn = sqlite3.connect('example.db') # 创建游标 cur = conn.cursor() # 执行查询语句 cur.execute('SELECT * FROM users WHERE name=:name', {'name': 'Alice'}) # 获取查询结果 result = cur.fetchall() # 关闭游标和连接 cur.close() conn.close() ``` 在上面的例子中,我们使用命名占位符来表示查询语句中的参数。`cur.execute` 方法的第二个参数是一个字典,其中键是参数名称,值是需要替换命名占位符的值。在这个例子中,我们查询了名字为 "Alice" 的用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rattenking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值