python 根据一个字典建立一个sqlite数据库类,字典的KEY作为列名,键值作为数据类型,数据库提供查询,增加数据,更新数据,删除等基本功能
时间: 2024-09-26 07:11:05 浏览: 53
【python爬虫】连续爬取一个或多个新浪微博用户的数据并将结果信息写入文件或数据库 介绍
在Python中,你可以创建一个简单的SQLite数据库类来处理基于字典的数据映射。首先,你需要安装`sqlite3`库,如果尚未安装可以使用`pip install sqlite3`命令。下面是一个基础的例子,展示如何实现这个类:
```python
import sqlite3
class DictDB:
def __init__(self, db_name):
self.conn = sqlite3.connect(db_name)
self.cursor = self.conn.cursor()
self.table_name = None
def create_table(self, data_dict):
table_name = data_dict.keys()[0] if not self.table_name else self.table_name
col_names = ', '.join([f'{k} {data_type}' for k, data_type in data_dict.items()])
query = f"CREATE TABLE IF NOT EXISTS {table_name} ({col_names})"
self.cursor.execute(query)
self.conn.commit()
def insert_data(self, data_dict):
table_name = self.table_name or data_dict.keys()[0]
placeholders = ', '.join(['?' for _ in data_dict.values()])
values = list(data_dict.values())
query = f"INSERT INTO {table_name} VALUES ({placeholders})"
self.cursor.execute(query, values)
self.conn.commit()
def update_data(self, primary_key, new_data):
table_name = self.table_name
placeholders = ', '.join(['?' for _ in new_data])
query = f"UPDATE {table_name} SET {', '.join([f'{k}=?' for k in new_data])} WHERE PRIMARY_KEY=?", # 假设primary_key字段存在
self.cursor.execute(query, tuple(new_data + [primary_key]))
self.conn.commit()
def delete_data(self, primary_key):
table_name = self.table_name
query = f'DELETE FROM {table_name} WHERE PRIMARY_KEY=?'
self.cursor.execute(query, (primary_key,))
self.conn.commit()
def close(self):
self.conn.close()
# 使用示例
db = DictDB('test.db')
db.create_table({'id': 'INTEGER', 'name': 'TEXT', 'age': 'INTEGER'})
db.insert_data({'id': 1, 'name': 'Alice', 'age': 25})
db.update_data(1, {'age': 26}) # 更新id为1的用户年龄
db.delete_data(2) # 删除id为2的记录
db.close()
```
在这个例子中,我们首先连接到SQLite数据库,然后根据提供的字典创建表、插入、更新和删除数据。注意,这里假设有一个名为`PRIMARY_KEY`的字段用于唯一标识每条记录。
阅读全文