python嵌入式开发实战_Python:操作嵌入式数据库SQLite

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

1. 实现:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

#导入日志及SQLite3模块

import logging

import logging.config

import sqlite3

#日志配置文件名

LOG_FILENAME = 'logging.conf'

#日志语句提示信息

LOG_CONTENT_NAME = 'sqlite_log'

#SQLite数据库名称

DB_SQLITE_PATH = ".\\db\\sqlite_pytest.db"

def log_init(log_config_filename, logname):

'''

Function:日志模块初始化函数

Input:log_config_filename:日志配置文件名

lognmae:每条日志前的提示语句

Output: logger

author: socrates

date:2012-02-11

'''

logging.config.fileConfig(log_config_filename)

logger = logging.getLogger(logname)

return logger

def operate_sqlite3_tbl_product():

'''

Function:操作SQLITE3数据库函数

Input:NONE

Output: NONE

author: socrates

date:2012-02-11

'''

sqlite_logger.debug("operate_sqlite3_tbl_product enter...")

#连接数据库

try:

sqlite_conn = sqlite3.connect(DB_SQLITE_PATH)

except sqlite3.Error, e:

print 'conntect sqlite database failed.'

sqlite_logger.error("conntect sqlite database failed, ret = %s" % e.args[0])

return

sqlite_logger.info("conntect sqlite database(%s) succ." % DB_SQLITE_PATH)

#获取游标

sqlite_cursor = sqlite_conn.cursor()

#删除表

sql_desc2 = "DROP TABLE IF EXISTS tbl_product3;"

try:

sqlite_cursor.execute(sql_desc2)

except sqlite3.Error, e:

print 'drop table failed'

sqlite_logger.error("drop table failed, ret = %s" % e.args[0])

sqlite_cursor.close()

sqlite_conn.close()

return

sqlite_conn.commit()

sqlite_logger.info("drop table(tbl_product3) succ.")

#建表

sql_desc = '''CREATE TABLE tbl_product3(

i_index INTEGER PRIMARY KEY,

sv_productname VARCHAR(32)

);'''

try:

sqlite_cursor.execute(sql_desc)

except sqlite3.Error, e:

print 'drop table failed.'

sqlite_logger.error("drop table failed, ret = %s" % e.args[0])

sqlite_cursor.close()

sqlite_conn.close()

return

sqlite_conn.commit()

sqlite_logger.info("create table(tbl_product3) succ.")

#插入记录

sql_desc = "INSERT INTO tbl_product3(sv_productname) values('apple')"

try:

sqlite_cursor.execute(sql_desc)

except sqlite3.Error, e:

print 'insert record failed.'

sqlite_logger.error("insert record failed, ret = %s" % e.args[0])

sqlite_cursor.close()

sqlite_conn.close()

return

sqlite_conn.commit()

sqlite_logger.info("insert record into table(tbl_product3) succ.")

#查询记录

sql_desc = "SELECT * FROM tbl_product3;"

sqlite_cursor.execute(sql_desc)

for row in sqlite_cursor:

print row

sqlite_logger.info("%s", row)

#关闭游标和数据库句柄

sqlite_cursor.close()

sqlite_conn.close()

sqlite_logger.debug("operate_sqlite3_tbl_product leaving...")

if __name__ == '__main__':

#初始化日志系统

sqlite_logger = log_init(LOG_FILENAME, LOG_CONTENT_NAME)

#操作数据库

operate_sqlite3_tbl_product()

2. 运行后的日志信息:

[2012-02-12 12:13:52,131 sqlite_log]DEBUG: operate_sqlite3_tbl_product enter... (test_log.py:39)

[2012-02-12 12:13:52,147 sqlite_log]INFO: conntect sqlite database(.\db\sqlite_pytest.db) succ. (test_log.py:49)

[2012-02-12 12:13:52,147 sqlite_log]INFO: drop table(tbl_product3) succ. (test_log.py:66)

[2012-02-12 12:13:52,240 sqlite_log]INFO: create table(tbl_product3) succ. (test_log.py:83)

[2012-02-12 12:13:52,365 sqlite_log]INFO: insert record into table(tbl_product3) succ. (test_log.py:97)

[2012-02-12 12:13:52,365 sqlite_log]INFO: (1, u'apple') (test_log.py:104)

[2012-02-12 12:13:52,365 sqlite_log]DEBUG: operate_sqlite3_tbl_product leaving... (test_log.py:110)

3.通过命令行查看:

Microsoft Windows XP [版本 5.1.2600]

(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\socrates.WINXP-DUANYX>cd /d E:\Study\学习\工作程序\py_

test\src\db

E:\Study\学习\工作程序\py_test\src\db>sqlite3.exe sqlite_pytest.db

SQLite version 3.7.9 2011-11-01 00:52:41

Enter ".help" for instructions

Enter SQL statements terminated with a ";"

sqlite> .tables

tbl_product3

sqlite> select * from tbl_product3;

1|apple

sqlite> .quit

E:\Study\学习\工作程序\py_test\src\db>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值