python学习1-博客-DB操作类

#学习python,准备写一个博客,第一天:在别人代码基础上写一个数据库操作的db.py
1)python代码
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
   v1.0 博客内容的添加、修改、删除、查看
'''
import pymysql
import logging
import sys
import datetime,time

# 加入日志
# 获取logger实例
logger = logging.getLogger("baseSpider")
# 指定输出格式
formatter = logging.Formatter('%(asctime)s\
              %(levelname)-8s:%(message)s')
# 文件日志
file_handler = logging.FileHandler("baseSpider.log")
file_handler.setFormatter(formatter)
# 控制台日志
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(formatter)

# 为logger添加具体的日志处理器
logger.addHandler(file_handler)
logger.addHandler(console_handler)
logger.setLevel(logging.INFO)

class DBHelper:
    # 构造函数
    def __init__(self, host='127.0.0.1', user='blog',
                 pwd='sf123456', db='myblog'):
        self.host = host
        self.user = user
        self.pwd = pwd
        self.db = db
        self.conn = None
        self.cur = None

    # 连接数据库
    def connectDatabase(self):
        try:
            self.conn = pymysql.connect(self.host, self.user,
                                        self.pwd, self.db, charset='utf8')
        except:
            logger.error("connectDatabase failed")
            return False
        self.cur = self.conn.cursor()
        return True

    # 关闭数据库
    def close(self):
        # 如果数据打开,则关闭;否则没有操作
        if self.conn and self.cur:
            self.cur.close()
            self.conn.close()
        return True

    # 执行数据库的sq语句,主要用来做插入操作
    def execute(self, sql, params=None):
        # 连接数据库
        self.connectDatabase()
        try:
            if self.conn and self.cur:
                # 正常逻辑,执行sql,提交操作
                self.cur.execute(sql, params)
                self.conn.commit()
        except:
            logger.error("execute failed: " + sql)
            logger.error("params: " + params)
            self.close()
            return False
        return True

    # 用来查询表数据
    def fetchall(self, sql, params=None):
        self.execute(sql, params)
        return self.cur.fetchall()

if __name__ == '__main__':
    dbhelper = DBHelper('192.168.0.111')
    # 操作表
    tbl = "blog_content"
    dt = str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    sql = """insert into  \
           %s(blog__topic, blog_content, blog_time)  \
           values('My first blog','hello,every body,this is my first blog','%s')""" %(tbl,dt)
    result = dbhelper.execute(sql,None)
    if result:
        logger.info("table %s 操作成功" %(sql))
    else:
        logger.info("table %s 操作失败" %(sql))

  


2)数据库设计
#博客内容清单
create table blog_content(
blog_id int NOT NULL comment '博客编号',
blog__topic varchar(80) comment '博客标题',
blog_content TEXT(65535) comment '博客内容',
blog_time DATETIME comment '发布时间',
PRIMARY KEY (`blog_id`)
);
alter table blog_content  MODIFY blog_id  INT  AUTO_INCREMENT;
#评论,外键
create table blog_remark (
id int NOT NULL comment '评论编号',
topic varchar(100) comment '博客标题',
comment TEXT(65535) comment '评论内容',
cmt_time DATETIME comment '评论时间',
blog_id int comment '评论的博客id',
CONSTRAINT fk_bc_bc
FOREIGN KEY (blog_id)
REFERENCES blog_content(blog_id)
);

猜你喜欢

转载自www.cnblogs.com/cwind/p/12169355.html
今日推荐