#学习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)
);

python学习1-博客-DB操作类的更多相关文章

  1. python之刷博客访问量

    通过写刷访问量学习正则匹配 说明信息 说明:仅仅是为了熟悉正则表达式以及网页结构,并不赞成刷访问量操作. 1.刷访问量第一版 1.1 确定网页url结构,构造匹配模式串 首先是要确定刷的网页.第一版实 ...

  2. 小白两篇博客熟练操作MySQL 之 第二篇

    小白两篇博客熟练操作MySQL  之   第二篇 一. 视图 视图是一个虚拟表,其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用名称即可获取结果集, 并可以将其当做表来使用. s ...

  3. 有哪些关于 Python 的技术博客?

    Python是一种动态解释型的编程语言,它可以在Windows.UNIX.MAC等多种操作系统以及Java..NET开发平台上使用.不过包含的内容很多,加上各种标准库.拓展库,乱花渐欲迷人眼.因此如何 ...

  4. python3.4学习笔记(七) 学习网站博客推荐

    python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...

  5. Hive学习 系列博客

    原 Hive作业优化 原 Hive学习六:HIVE日志分析(用户画像) 原 Hive学习五--日志案例分析 原 Hive学习三 原 Hive学习二 原 Hive学习一 博客来源,https://blo ...

  6. 小白两篇博客熟练操作MySQL 之 第一篇

    小白两篇博客熟悉操作MySQL  之   第一篇 一.概述 1. 什么是数据库? 答: 储存数据的仓库, 如: 在ATM的事例中创建的一个db 目录, 称为数据库 2. 什么是Mysql, Oracl ...

  7. Android学习之 博客专栏 与 资料

    android | Android Developers Android学习系列 - 谦虚的天下 - 博客园 android基础 - 生如夏花之灿烂 - 博客园 Android开发 - 皓月繁星 - ...

  8. python爬取博客圆首页文章链接+标题

    新人一枚,初来乍到,请多关照 来到博客园,不知道写点啥,那就去瞄一瞄大家都在干什么好了. 使用python 爬取博客园首页文章链接和标题. 首先当然是环境了,爬虫在window10系统下,python ...

  9. 【Python】[技术博客] 一些使用Python编写获取手机App日志的操作

    一些使用Python编写获取手机App日志的操作 如何获取手机当前打开的App的包名 如何获取当前App进程的PID 如何查看当前App的日志 如何将日志保存到文件 如何关闭进程 如何不显示命令行窗口 ...

随机推荐

  1. deepin下启动自己的springcloud服务报错

    java.nio.file.AccessDeniedException: /home/msan/logs/csp/sentinel-record.log.2021-01-04.0.2.lck at s ...

  2. 菜鸟的springboot常用注解总结

    菜鸟的springboot常用注解总结 0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用 ...

  3. linux(3)--------SSH工具的安装使用

    0.一般安装服务端的Linux ssh是默认安装的可以运行ssh localhost测试一下是否可以链接 1.SSH是什么 1)ssh:Secure Shell  安全外壳协议 2)建立在应用层基础上 ...

  4. Spring PropertyPlaceholderConfigurer 自定义扩展

    原文地址:https://blog.csdn.net/feiyu8607/article/details/8282893 Spring中PropertyPlaceholderConfigurer这个类 ...

  5. Kickstart部署之NFS架构

    原文转自:https://www.cnblogs.com/itzgr/p/10200615.html作者:木二 目录 一 准备 1.1 完整架构:Kickstart+DHCP+NFS+TFTP+PXE ...

  6. BUUCTF-[CISCN2019 华东南赛区]Web4

    BUUCTF-[CISCN2019 华东南赛区]Web4 看题 点击Read somethings,会跳转到 http://3fd8b1f9-614f-47ff-8e79-0f678e7bb4eb.n ...

  7. C++模板简介

    模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数.返回值取得任意类型. 模板是一种对类型进行参数化的工具: 通常有两种形式:函 ...

  8. JDK1.8源码(二)——java.lang.Integer类

    一.初识 1.介绍 int 是Java八大基本数据类型之一,占据 4 个字节,范围是 -2^31~2^31 - 1,即 -2147483648~2147483647.而 Integer 是 int 包 ...

  9. HTTP快速入门

    一.tomcat端口号设置为80,访问时候可以不加:http协议1.1版本可以复用连接,请求结束后会稍微等会: 二. 表单,get方式提交: 三.user-agent告诉服务器是哪个浏览器,代码中解决 ...

  10. 取消input默认提示框

    input输入框有自动保存记忆功能,点击的时候之前输入的内容会在下拉框自动提示 autocomplete="off",这是H5的一个属性. <input type=" ...