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

自古美人都是妖i 提交于 2020-01-09 01:27:32
#学习python,准备写一个博客,第一天:在别人代码基础上写一个数据库操作的db.py1)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_bcFOREIGN KEY (blog_id)REFERENCES blog_content(blog_id));
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!