歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Python:操作嵌入式數據庫SQLite

寫過一篇通過C語言操作SQLite數據庫的文章《SQLITE學習筆記一(打開、操作及關閉數據庫,C程序實現)》 見 http://www.linuxidc.com/Linux/2012-02/54211.htm,最近在學習python,所以使用ptyhon實現了一下,實現不多描述了,代碼中的注釋已經非常詳細了。直接貼上來。

1. 實現:

[python]

  1. #!/usr/bin/env python   
  2. # -*- coding: utf-8 -*-   
  3.   
  4. #導入日志及SQLite3模塊   
  5. import logging  
  6. import logging.config  
  7. import sqlite3  
  8.   
  9. #日志配置文件名   
  10. LOG_FILENAME = 'logging.conf'  
  11.   
  12. #日志語句提示信息   
  13. LOG_CONTENT_NAME = 'sqlite_log'  
  14.   
  15. #SQLite數據庫名稱   
  16. DB_SQLITE_PATH = ".\\db\\sqlite_pytest.db"  
  17.   
  18. def log_init(log_config_filename, logname):  
  19.     ''''' 
  20.     Function:日志模塊初始化函數 
  21.     Input:log_config_filename:日志配置文件名 
  22.            lognmae:每條日志前的提示語句 
  23.     Output: logger 
  24.     author: socrates 
  25.     date:2012-02-11 
  26.     '''  
  27.     logging.config.fileConfig(log_config_filename)  
  28.     logger = logging.getLogger(logname)  
  29.     return logger  
  30.   
  31. def operate_sqlite3_tbl_product():  
  32.     ''''' 
  33.     Function:操作SQLITE3數據庫函數 
  34.     Input:NONE 
  35.     Output: NONE 
  36.     author: socrates 
  37.     date:2012-02-11 
  38.     '''    
  39.     sqlite_logger.debug("operate_sqlite3_tbl_product enter...")   
  40.       
  41.     #連接數據庫     
  42.     try:  
  43.         sqlite_conn = sqlite3.connect(DB_SQLITE_PATH)  
  44.     except sqlite3.Error, e:  
  45.          print 'conntect sqlite database failed.'  
  46.          sqlite_logger.error("conntect sqlite database failed, ret = %s" % e.args[0])      
  47.          return      
  48.        
  49.     sqlite_logger.info("conntect sqlite database(%s) succ." % DB_SQLITE_PATH)   
  50.        
  51.     #獲取游標    
  52.     sqlite_cursor = sqlite_conn.cursor()  
  53.       
  54.     #刪除表   
  55.     sql_desc2 = "DROP TABLE IF EXISTS tbl_product3;"  
  56.     try:  
  57.         sqlite_cursor.execute(sql_desc2)  
  58.     except sqlite3.Error, e:  
  59.          print 'drop table failed'  
  60.          sqlite_logger.error("drop table failed, ret = %s" % e.args[0])  
  61.          sqlite_cursor.close()  
  62.          sqlite_conn.close()        
  63.          return  
  64.     sqlite_conn.commit()      
  65.       
  66.     sqlite_logger.info("drop table(tbl_product3) succ.")   
  67.       
  68.     #建表   
  69.     sql_desc = '''''CREATE TABLE tbl_product3( 
  70.     i_index INTEGER PRIMARY KEY, 
  71.     sv_productname VARCHAR(32) 
  72.     );'''  
  73.     try:  
  74.         sqlite_cursor.execute(sql_desc)  
  75.     except sqlite3.Error, e:  
  76.          print 'drop table failed.'  
  77.          sqlite_logger.error("drop table failed, ret = %s" % e.args[0])  
  78.          sqlite_cursor.close()  
  79.          sqlite_conn.close()      
  80.          return      
  81.     sqlite_conn.commit()  
  82.       
  83.     sqlite_logger.info("create table(tbl_product3) succ.")   
  84.       
  85.     #插入記錄   
  86.     sql_desc = "INSERT INTO tbl_product3(sv_productname) values('apple')"  
  87.     try:  
  88.         sqlite_cursor.execute(sql_desc)  
  89.     except sqlite3.Error, e:  
  90.         print 'insert record failed.'  
  91.         sqlite_logger.error("insert record failed, ret = %s" % e.args[0])    
  92.         sqlite_cursor.close()  
  93.         sqlite_conn.close()      
  94.         return      
  95.     sqlite_conn.commit()  
  96.       
  97.     sqlite_logger.info("insert record into table(tbl_product3) succ.")   
  98.       
  99.     #查詢記錄   
  100.     sql_desc = "SELECT * FROM tbl_product3;"      
  101.     sqlite_cursor.execute(sql_desc)  
  102.     for row in sqlite_cursor:  
  103.         print row  
  104.         sqlite_logger.info("%s", row)   
  105.       
  106.     #關閉游標和數據庫句柄       
  107.     sqlite_cursor.close()  
  108.     sqlite_conn.close()  
  109.       
  110.     sqlite_logger.debug("operate_sqlite3_tbl_product leaving...")   
  111.   
  112. if __name__ == '__main__':   
  113.       
  114.     #初始化日志系統   
  115.     sqlite_logger = log_init(LOG_FILENAME, LOG_CONTENT_NAME)     
  116.       
  117.     #操作數據庫   
  118.     operate_sqlite3_tbl_product()  
  119.       

2. 運行後的日志信息:

[plain]

  1. [2012-02-12 12:13:52,131  sqlite_log]DEBUG:  operate_sqlite3_tbl_product enter... (test_log.py:39)  
  2. [2012-02-12 12:13:52,147  sqlite_log]INFO:  conntect sqlite database(.\db\sqlite_pytest.db) succ. (test_log.py:49)  
  3. [2012-02-12 12:13:52,147  sqlite_log]INFO:  drop table(tbl_product3) succ. (test_log.py:66)  
  4. [2012-02-12 12:13:52,240  sqlite_log]INFO:  create table(tbl_product3) succ. (test_log.py:83)  
  5. [2012-02-12 12:13:52,365  sqlite_log]INFO:  insert record into table(tbl_product3) succ. (test_log.py:97)  
  6. [2012-02-12 12:13:52,365  sqlite_log]INFO:  (1, u'apple') (test_log.py:104)  
  7. [2012-02-12 12:13:52,365  sqlite_log]DEBUG:  operate_sqlite3_tbl_product leaving... (test_log.py:110)  
3.通過命令行查看:

[plain]

  1. Microsoft Windows XP [版本 5.1.2600]  
  2. (C) 版權所有 1985-2001 Microsoft Corp.  
  3.   
  4. C:\Documents and Settings\socrates.WINXP-DUANYX>cd /d E:\Study\學習\工作程序\py_  
  5. test\src\db  
  6.   
  7. E:\Study\學習\工作程序\py_test\src\db>sqlite3.exe sqlite_pytest.db  
  8. SQLite version 3.7.9 2011-11-01 00:52:41  
  9. Enter ".help" for instructions  
  10. Enter SQL statements terminated with a ";"  
  11. sqlite> .tables  
  12. tbl_product3  
  13. sqlite> select * from tbl_product3;  
  14. 1|apple  
  15. sqlite> .quit  
  16.   
  17. E:\Study\學習\工作程序\py_test\src\db>  
Copyright © Linux教程網 All Rights Reserved