zoukankan      html  css  js  c++  java
  • [Python]操作嵌入式数据库SQLite

    http://blog.csdn.net/dyx1024/article/details/7252274

    去年写过一篇通过C语言操作SQLite数据库的文章《SQLITE学习笔记一(打开、操作及关闭数据库,C程序实现)》,最近在学习python,所以使用ptyhon实现了一下,实现不多描述了,代码中的注释已经非常详细了。直接贴上来。

    1. 实现:

    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. 运行后的日志信息:

    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.通过命令行查看:

      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> 
  • 相关阅读:
    Java第十次作业-房地产;学生成绩计算
    找回感觉之模拟房地产首付计算
    软件工程第四次作业—结对项目
    【作业】需要改进的用户体验二三则
    项目互测测试方式及报告
    [ASE]项目介绍及项目跟进——TANK BATTLE·INFINITE
    Hello World!
    [ASE]sprint3 总结 & sprint4计划
    [ASE][Daily Scrum]12.15
    [ASE][Daily Scrum]12.12
  • 原文地址:https://www.cnblogs.com/androidme/p/3038634.html
Copyright © 2011-2022 走看看