日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python3操作sqite3删除数据表字段

發布時間:2024/3/24 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3操作sqite3删除数据表字段 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文介紹python3對sqite3數據庫的常用操作,sqite官網。

一、創建數據庫操作類

class CDBManage:def __init__(self, dbname: str = None):self.__dbname = 'local.db'if dbname:self.__dbname = '{0}.db'.format(dbname)self.__conn = sqlite3.connect(self.__dbname)def __del__(self):self.__conn.close()def get_dbname(self):return '{0}/{1}'.format(os.path.abspath('./'), self.__dbname)def sqlite3_query(self, sql: str):results = []try:cursor = self.__conn.execute(sql)results = cursor.fetchall()except Exception as e:self.__conn.rollback() # 事務回滾logging.error('[sqlite3_query]Failed to run sqlite3_query, {0}'.format(e))return results# 執行自定義sql語句增、刪、改def sqlite3_execute(self, sql: str):try:cur = self.__conn.cursor()cur.execute(sql)self.__conn.commit()cur.close()except Exception as e:self.__conn.rollback() # 事務回滾logging.error('[sqlite3_execute]Failed to run sqlite3_execute, {0},{1}'.format(e, sql))# 批量執行自定義sql語句增、刪、改def sqlite3_batch_execute(self, sqlList: list):if not sqlList:returntry:cur = self.__conn.cursor()for sql in sqlList:cur.execute(sql)self.__conn.commit()cur.close()except Exception as e:self.__conn.rollback() # 事務回滾logging.error('[sqlite3_batch_execute]Failed to run sqlite3_batch_execute, {0}'.format(e))

說明:

  • 類創建對象時,創建默認數據庫名稱local.db,并創建數據庫連接
  • 對象銷毀時,關閉數據庫連接
  • sqlite3_query運行查詢sql語句,結果以列表形式返回
  • sqlite3_execute運行sql語句增、刪、改
  • sqlite3_batch_execute批量運行sql語句增、刪、改
  • 增、刪、改操作出錯后支持事務回滾

二、sqite3常用操作

1. 創建數據表

def create_database(tb_name: str, tb_content: str):dbman = CDBManage()sql = "select * from sqlite_master where type = 'table' and name = '{0}';".format(tb_name)results = dbman.sqlite3_query(sql)if not results:dbman.sqlite3_execute(tb_content)else:logging.info('數據表{0}已經存在'.format(tb_name))# 調用例子 create_database('site_info', '''CREATE TABLE site_info(ST_Id INTEGER PRIMARY KEY AUTOINCREMENT,ST_Site CHAR(255) NOT NULL,ST_Storage CHAR(32) NOT NULL,ST_Desc CHAR(255) NOT NULL,ST_Type CHAR(64));''')

2. 刪除數據表

def delete_table(tb_name: str):dbman = CDBManage()sql = "drop table {0};".format(tb_name)dbman.sqlite3_execute(sql)# 調用例子 delete_table('site_info')

3. 清空數據表

def empty_table(tb_name: str):dbman = CDBManage()sql = "delete from {0};".format(tb_name)dbman.sqlite3_execute(sql)# 調用例子 empty_table('site_info')

4. 增加數據表字段

def add_table_field(tb_name: str, field: str):dbman = CDBManage()sql = "ALTER TABLE {0} ADD COLUMN {1};".format(tb_name, field)dbman.sqlite3_execute(sql)# 調用例子 add_table_field('site_info', 'field1 CHAR(32)') add_table_field('site_info', 'field2 INT')

5. 刪除數據表字段

SQLite目前還不支持drop column,刪除需要寫代碼實現

def del_table_field(tb_name: str, field: str):dbman = CDBManage()# 查詢數據表所有字段sql = "pragma table_info({0});".format(tb_name)field_list = []results = dbman.sqlite3_query(sql)# [(0, 'ST_Id', 'INTEGER', 0, None, 1), (1, 'ST_Site', 'CHAR(255)', 1, None, 0), (2, 'ST_Storage', 'CHAR(32)', 1, None, 0), (3, 'ST_Desc', 'CHAR(255)', 1, None, 0), (4, 'ST_Type', 'CHAR(64)', 0, None, 0)]if results:for res in results:field_list.append(res[1]) # 第二個值是字段名稱if field not in field_list:returnsql = "create table temp as select {0} from {1} where 1 = 1;".format(','.join(field_list.remove(field, tb_name)))dbman.sqlite3_execute(sql) # 刪除字段后用剩余字段創建臨時表sql = "drop table {0};".format(tb_name); dbman.sqlite3_execute(sql) # 刪除舊表sql = "alter table temp rename to {0};".format(tb_name); dbman.sqlite3_execute(sql) # 把臨時表改名為舊表名稱# 調用例子 del_table_field('site_info', 'ST_Type')

總結

以上是生活随笔為你收集整理的python3操作sqite3删除数据表字段的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。