jlzzjlzz亚洲乱熟在线播放

系統城裝機大師 - 唯一官網:www.farandoo.com!

當前位置:首頁 > 數據庫 > SQLite > 詳細頁面

python 獲取sqlite3數據庫的表名和表字段名的實例

時間:2019-12-04來源:系統城作者:電腦系統城

Python中對sqlite3數據庫進行操作時,經常需要用到字段名,然而對于sqlite使用select語句并不能象MySql等數據庫一樣返回帶字段名的字典數據集。特別是對于一個不熟悉的sqlite數據庫,寫代碼時如果需要借助工具查看,那其實是有點對不起python的。

下面兩段代碼就可以輕易獲得一個sqlite數據庫中所有數據表名和字段名的列表:


 
  1. # python 獲取sqlite3數據庫mydb.db中的表名和表字段名
  2.  
  3. import sqlite3
  4. conn=sqlite3.connect('mydb.db')
  5. cu=conn.cursor()
  6.  
  7. #獲取表名,保存在tab_name列表
  8. cu.execute("select name from sqlite_master where type='table'")
  9. tab_name=cu.fetchall()
  10. tab_name=[line[0] for line in tab_name]
  11.  
  12. #獲取表的列名(字段名),保存在col_names列表,每個表的字段名集為一個元組
  13. col_names=[]
  14. for line in tab_name:
  15. cu.execute('pragma table_info({})'.format(line))
  16. col_name=cu.fetchall()
  17. col_name=[x[1] for x in col_name]
  18. col_names.append(col_name)
  19. col_name=tuple(col_name)
  20.  
  21. #之所以保存為元組,一是可避免誤操作修改字段名,二是元組巧用轉化字符串,可
  22. #直接用于SQL的insert語句中。例如下面代碼可得到第一個表的帶括號字段名集合:
  23. '''
  24. sql_col_name=str(col_names[0]).replace('\'','')
  25. '''
  26.  
  27.  

接下來,用自動獲取的字段名做點事吧。

比如,我一個sqlite數據庫的表數據是從Excel表中導入的,Excel表中一些誤錄入的回車符也被一同導入了,在sqlite表中會顯示為‘\n'的字符,我想把所有字段中的這個字符都去掉,我是通過以下代碼實現的。


 
  1. #刪除第一個表中所有文本型字段中的回車符(注:存入數據庫中的回車符取出
  2. #后會展現為原始字符'\n')
  3. cu.execute('select * from '+ tab_name[0])
  4. cdset=cu.fetchall()
  5. cdset=[list(line) for line in cdset] #將結果集的元組轉為列表,才能修改。
  6. for line in cdset:
  7. for x in range(len(line)):
  8. #注:作為For循環計數變量不能在循環體中修改,此處不能用x in line代替
  9. if type(line[x])==str and (r'\n' in line[x]): #只能修改字符型數據
  10. line[x]=line[x].replace(r'\n','')
  11. sql="update {bm} set {cm}='{vm}' where {cm2}={vm2}".format(
  12. bm=tab_name[0],cm=col_names[0][x],vm=line[x],cm2=col_names
  13. [0][0],vm2=line[0])
  14. #此處cm2必須是表中具有排它性的主鍵字段,非字符型字段
  15. cu.execute(sql)
  16. conn.commit()

以上這篇python 獲取sqlite3數據庫的表名和表字段名的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。

分享到:

相關信息

系統教程欄目

欄目熱門教程

人氣教程排行

站長推薦

熱門系統下載