Python Sqlite3以字典形式返回查询结果的实现方法

游标获得数据库返回的数据集后,习惯了通过字段名读取字段的值,例如ADODB中recordset 用 rs("字段名") 或者 rs(i) 都是支持的。

但Sqlite3居然不支持。

查得:sqlite3本身并没有原生提供字典形式的游标,(adodb、pymysql等其他库有)

 

1

cursor = conn.cursor(pymysql.cursors.DictCursor)

但官方文档里已经有预留了相应的实现方案。

1

2

3

4

5

def dict_factory(cursor, row):

  d = {}

  for idx, col in enumerate(cursor.description):

    d[col[0]] = row[idx]

  return d

使用这个函数代替conn.raw_factory属性即可。

1

2

3

4

5

con = sqlite3.connect(":memory:") #打开在内存里的数据库

con.row_factory = dict_factory

cur = con.cursor()

cur.execute("select 1 as a")

print cur.fetchone()["a"]

官方文档链接

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ```python import sqlite3 def insert_dict_to_sqlite(dict_data, table_name): conn = sqlite3.connect('example.db') c = conn.cursor() columns = ', '.join(dict_data.keys()) placeholders = ':'+', :'.join(dict_data.keys()) query = f'INSERT INTO {table_name} ({columns}) VALUES ({placeholders})' c.execute(query, dict_data) conn.commit() conn.close() # example usage data = {'name': 'John Doe', 'age': 30} insert_dict_to_sqlite(data, 'users') ``` 这段代码将字典传入函数 insert_dict_to_sqlite,并将其存入名为 "users" 的表中。需要注意的是,在使用前需要先连接到数据库并创建表。 ### 回答2: 可以使用Python内置的sqlite3模块来操作SQLite数据库,并根据字典的key和value插入数据。具体代码如下: ```python import sqlite3 def insert_data(data): # 连接数据库 conn = sqlite3.connect('example.db') cursor = conn.cursor() # 创建表格(如果不存在) cursor.execute('''CREATE TABLE IF NOT EXISTS my_table (key TEXT, value TEXT)''') # 插入数据 for key, value in data.items(): cursor.execute("INSERT INTO my_table (key, value) VALUES (?, ?)", (key, value)) # 提交更改并关闭连接 conn.commit() conn.close() # 示例字典 data = {"name": "Alice", "age": "25", "city": "New York"} # 插入数据到数据库 insert_data(data) ``` 以上代码首先导入sqlite3模块,然后定义一个名为insert_data的函数,用来插入数据。 在函数中,首先通过sqlite3.connect()函数连接到数据库,然后使用cursor()方法创建游标对象。 接着,使用execute()方法执行SQL语句,创建名为my_table的表格(如果不存在)。 然后,通过遍历字典的items()方法,获取每个键值对的键和值,并使用execute()方法将数据插入到表格中。 最后,通过commit()方法提交更改,并使用close()方法关闭数据库连接。 最后,定义一个示例字典data,并调用insert_data函数传入该字典来插入数据到数据库中。 ### 回答3: import sqlite3 def insert_data(dict_data): conn = sqlite3.connect("example.db") # 连接到数据库 c = conn.cursor() for key, value in dict_data.items(): c.execute("INSERT INTO table_name (key_column, value_column) VALUES (?, ?)", (key, value)) conn.commit() # 提交事务 conn.close() # 关闭数据库连接 # 使用示例 data = {'name': 'John', 'age': 25, 'gender': 'Male'} insert_data(data)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值