import sqlite3
class Db:
def __init__(self, db_name):
self.db_name = db_name
self.conn = self.connect()
self.cursor = self.conn.cursor()
def connect(self):
"""建立数据库连接"""
return sqlite3.connect(self.db_name)
def close(self):
"""关闭数据库连接"""
if self.cursor:
self.cursor.close()
if self.conn:
self.conn.close()
def execute(self, sql, params=()):
"""执行 SQL 语句并提交更改"""
self.cursor.execute(sql, params)
self.conn.commit()
self.close()
def create_table(self, table_name, columns):
"""创建新表"""
column_defs = ', '.join(f'{name} {type}' for name, type in columns.items())
self.execute(f'CREATE TABLE IF NOT EXISTS {table_name} ({column_defs})')
def add(self, table_name, data):
"""插入数据到表中"""
placeholders = ', '.join('?' * len(data))
columns = ', '.join(data.keys())
values = tuple(data.values())
sql=f'INSERT INTO {table_name} ({columns}) VALUES ({placeholders})', values
self.execute(sql)
def update(self, table_name, data, condition):
"""更新表中的数据"""
set_clause = ', '.join(f'{key}=?' for key in data.keys())
values = tuple(data.values())
self.execute(f'UPDATE {table_name} SET {set_clause} WHERE {condition}', values)
def delete(self, table_name, where):
"""从表中删除数据"""
self.execute(f'DELETE FROM {table_name} WHERE {where}')
def find(self,table_name, where):
"""从表中查找数据"""
sql=f'select * FROM {table_name} WHERE {where}'
self.cursor.execute(sql)
results = self.cursor.fetchone()
self.close()
return results
def select(self,table_name, where):
"""执行 SQL 查询并返回所有结果"""
sql=f'select * FROM {table_name} WHERE {where}'
self.cursor.execute(sql)
results = self.cursor.fetchall()
self.close()
return results