日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【python】sqlite使用

發布時間:2024/9/21 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【python】sqlite使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

官方文檔:https://docs.python.org/2/library/sqlite3.html

sqlite教程:http://www.runoob.com/sqlite/sqlite-delete.html

?

安裝

linux系統一般自帶sqlite不需安裝。在終端輸入sqlite3,出現如下提示則表示已經安裝了sqlite

SQLite version 3.6.20 Enter ".help" for instructions Enter SQL statements terminated with a ";"

新建一個數據庫:

如下,直接在命令行輸入即可

sqlite3 test.db

注意,sqlite會在當前文件目錄下生成test.db文件。比如在路徑 /home/A/B下生成了test.db,如果想在/home/X/Y目錄下使用該數據庫,需要加上路徑

sqlite3 /home/A/B/test.db

如果沒有該文件,sqlite會生成對應文件。

在python中使用sqlite

需要import sqlite3模塊,具體使用可以參見上面的鏈接。主要注意兩點:

1.sqlite轉義方法

在數據庫操作中,經常會用到類似于 ?select * from ABC where XXX = '%s' % ("""a'bc"d""")的情況。此時%s對應的字符中的引號會導致錯誤,因此需要轉義。一般數據庫都會有自己的轉義函數。像mysql就有MySQLdb.escape_string()?處理該問題。在sqlite中,用?匹配解決該問題。

即將待插入的值都用?占位,將數據用元組傳入。

t = ('RHAT',) c.execute('SELECT * FROM stocks WHERE symbol=?', t) print c.fetchone() purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),('2006-04-06', 'SELL', 'IBM', 500, 53.00),] c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)

這樣避免了引號問題,安全性更好。

2.獲取表字段名稱與表數據對應關系

在pymongo中,使用coll.find()查找信息得到的都是字典,比如{"a":1,"b":2,"c":3},我們很容易通過字典判斷字段的取值情況。但是sqlite給出的結果是列表形式,如[1,2,3]并不給出對應的字段名,如果不清楚有哪些字段很難處理。

可以采用如下方法解決:

#coding=utf8 import sqlite3conn = sqlite3.connect(dbpath) cursor = self.conn.cursor()#獲取字段名稱 sql = 'pragma table_info(%s)' % tb_name cursor.execute(sql) parg = cursor.fetchall() col_names = [p[1] for p in parg] #獲取字段名稱#獲取數據 sql = 'SELECT * FROM %s' % tb_name for data in cursor.execute(sql):record = dict(zip(col_names, data)) #將字段名稱和數據映射為字典

?

總結

以上是生活随笔為你收集整理的【python】sqlite使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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