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)
);
python学习1-博客-DB操作类的更多相关文章
- python之刷博客访问量
通过写刷访问量学习正则匹配 说明信息 说明:仅仅是为了熟悉正则表达式以及网页结构,并不赞成刷访问量操作. 1.刷访问量第一版 1.1 确定网页url结构,构造匹配模式串 首先是要确定刷的网页.第一版实 ...
- 小白两篇博客熟练操作MySQL 之 第二篇
小白两篇博客熟练操作MySQL 之 第二篇 一. 视图 视图是一个虚拟表,其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用名称即可获取结果集, 并可以将其当做表来使用. s ...
- 有哪些关于 Python 的技术博客?
Python是一种动态解释型的编程语言,它可以在Windows.UNIX.MAC等多种操作系统以及Java..NET开发平台上使用.不过包含的内容很多,加上各种标准库.拓展库,乱花渐欲迷人眼.因此如何 ...
- python3.4学习笔记(七) 学习网站博客推荐
python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...
- Hive学习 系列博客
原 Hive作业优化 原 Hive学习六:HIVE日志分析(用户画像) 原 Hive学习五--日志案例分析 原 Hive学习三 原 Hive学习二 原 Hive学习一 博客来源,https://blo ...
- 小白两篇博客熟练操作MySQL 之 第一篇
小白两篇博客熟悉操作MySQL 之 第一篇 一.概述 1. 什么是数据库? 答: 储存数据的仓库, 如: 在ATM的事例中创建的一个db 目录, 称为数据库 2. 什么是Mysql, Oracl ...
- Android学习之 博客专栏 与 资料
android | Android Developers Android学习系列 - 谦虚的天下 - 博客园 android基础 - 生如夏花之灿烂 - 博客园 Android开发 - 皓月繁星 - ...
- python爬取博客圆首页文章链接+标题
新人一枚,初来乍到,请多关照 来到博客园,不知道写点啥,那就去瞄一瞄大家都在干什么好了. 使用python 爬取博客园首页文章链接和标题. 首先当然是环境了,爬虫在window10系统下,python ...
- 【Python】[技术博客] 一些使用Python编写获取手机App日志的操作
一些使用Python编写获取手机App日志的操作 如何获取手机当前打开的App的包名 如何获取当前App进程的PID 如何查看当前App的日志 如何将日志保存到文件 如何关闭进程 如何不显示命令行窗口 ...
随机推荐
- WinForm嵌入Web网页的解决方案
企业级信息化系统绝大部分采用BS架构实现,如门户网站.OA系统.电商网站等,通过浏览器输入Web网址即可访问,对于使用者来说非常便捷,对于开发维护者来说也非常方便,程序维护只需更新服务器即可,使用者无 ...
- window 右键菜单中添加在vs code 打开
原文链接: window 右键菜单中添加在vs code 打开 window 右键菜单中添加在vs code 打开 吃码小妖:以前安装VS code可以的,后面不知道为什么不能右键在VS code中打 ...
- docker加速器,设置cdn
添加加速器 vim /etc/docker/daemon.json 添加如下内容 { "registry-mirrors": ["https://registry.doc ...
- yum clean all大坑解决
在Centos7系统中执行yum clean all 之后,发现yum的其他执行都报错了: 要解决,关键在这里: 把/var/cache/yum/ 下面的文件删除了 接下来,如果执行yum repol ...
- c# 对 struct为什么不能继承类和结构的思考
1.类.结构在使用的时候可以不调用构造函数,如果能够继承类,这种情况下不能够初始化基类,因为不执行构造函数 2.结构.所有的结构类型都默认是 sealed,通过 反汇编可以看到 ,这就阻止了结构被继 ...
- (转)致Java程序员:你离架构师还差多远?
转至:https://blog.csdn.net/ityouknow/article/details/82782965 几乎每个Java程序员心中,都有着成为架构师的技术追求.那么,成为Java架构师 ...
- Storm重启topology,失败
storm新加节点,重启topology后,出现错误 如果检查了CPU和内存不高后,还出现 java.lang.OutOfMemoryError: unable to create new nativ ...
- vue3.0入门(四):组件
组件 组件基础 <my-counter></my-counter> const app = Vue.createApp({ // 根组件 data() { return {} ...
- 求证:-1/2 <= {2x} - {x} < 1/2
证:由 x = [x] + {x},知2x = 2[x] + 2{x}. 1.若{x}落在[0,1/2),则2{x} < 1,于是有{2x} = 2{x},此时 {2x} - {x} = {x} ...
- Nginx从安装到虚拟主机、https加密、重定向的设置
编译前的设置: 在源代码文件中把版本号注释掉,这是为了防止针对特定版本的恶意攻击 关闭编译时的调试模式 解决编译前的依赖性 进行配置参数: 对参数进行解读: 编译和安装: 做软链接方便调用: 创建ng ...