歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Python:操作嵌入式數據庫SQLite

Python:操作嵌入式數據庫SQLite

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

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. C:\Documents and Settings\socrates.WINXP-DUANYX>cd /d E:\Study\學習\工作程序\py_
  4. test\src\db
  5. E:\Study\學習\工作程序\py_test\src\db>sqlite3.exe sqlite_pytest.db
  6. SQLite version 3.7.9 2011-11-01 00:52:41
  7. Enter ".help" for instructions
  8. Enter SQL statements terminated with a ";"
  9. sqlite> .tables
  10. tbl_product3
  11. sqlite> select * from tbl_product3;
  12. 1|apple
  13. sqlite> .quit
  14. E:\Study\學習\工作程序\py_test\src\db>
Copyright © Linux教程網 All Rights Reserved