1. #学习python,准备写一个博客,第一天:在别人代码基础上写一个数据库操作的db.py
    1python代码
  1. #!/usr/bin/env python
  2. # -*- coding: UTF-8 -*-
  3. '''
  4. v1.0 博客内容的添加、修改、删除、查看
  5. '''
  6. import pymysql
  7. import logging
  8. import sys
  9. import datetime,time
  10.  
  11. # 加入日志
  12. # 获取logger实例
  13. logger = logging.getLogger("baseSpider")
  14. # 指定输出格式
  15. formatter = logging.Formatter('%(asctime)s\
  16. %(levelname)-8s:%(message)s')
  17. # 文件日志
  18. file_handler = logging.FileHandler("baseSpider.log")
  19. file_handler.setFormatter(formatter)
  20. # 控制台日志
  21. console_handler = logging.StreamHandler(sys.stdout)
  22. console_handler.setFormatter(formatter)
  23.  
  24. # 为logger添加具体的日志处理器
  25. logger.addHandler(file_handler)
  26. logger.addHandler(console_handler)
  27. logger.setLevel(logging.INFO)
  28.  
  29. class DBHelper:
  30. # 构造函数
  31. def __init__(self, host='127.0.0.1', user='blog',
  32. pwd='sf123456', db='myblog'):
  33. self.host = host
  34. self.user = user
  35. self.pwd = pwd
  36. self.db = db
  37. self.conn = None
  38. self.cur = None
  39.  
  40. # 连接数据库
  41. def connectDatabase(self):
  42. try:
  43. self.conn = pymysql.connect(self.host, self.user,
  44. self.pwd, self.db, charset='utf8')
  45. except:
  46. logger.error("connectDatabase failed")
  47. return False
  48. self.cur = self.conn.cursor()
  49. return True
  50.  
  51. # 关闭数据库
  52. def close(self):
  53. # 如果数据打开,则关闭;否则没有操作
  54. if self.conn and self.cur:
  55. self.cur.close()
  56. self.conn.close()
  57. return True
  58.  
  59. # 执行数据库的sq语句,主要用来做插入操作
  60. def execute(self, sql, params=None):
  61. # 连接数据库
  62. self.connectDatabase()
  63. try:
  64. if self.conn and self.cur:
  65. # 正常逻辑,执行sql,提交操作
  66. self.cur.execute(sql, params)
  67. self.conn.commit()
  68. except:
  69. logger.error("execute failed: " + sql)
  70. logger.error("params: " + params)
  71. self.close()
  72. return False
  73. return True
  74.  
  75. # 用来查询表数据
  76. def fetchall(self, sql, params=None):
  77. self.execute(sql, params)
  78. return self.cur.fetchall()
  79.  
  80. if __name__ == '__main__':
  81. dbhelper = DBHelper('192.168.0.111')
  82. # 操作表
  83. tbl = "blog_content"
  84. dt = str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
  85. sql = """insert into \
  86. %s(blog__topic, blog_content, blog_time) \
  87. values('My first blog','hello,every body,this is my first blog','%s')""" %(tbl,dt)
  88. result = dbhelper.execute(sql,None)
  89. if result:
  90. logger.info("table %s 操作成功" %(sql))
  91. else:
  92. logger.info("table %s 操作失败" %(sql))

  


  1. 2)数据库设计
  1. #博客内容清单
    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`)
    );
  1. alter table blog_content MODIFY blog_id INT AUTO_INCREMENT;
  1. #评论,外键
    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. WinForm嵌入Web网页的解决方案

    企业级信息化系统绝大部分采用BS架构实现,如门户网站.OA系统.电商网站等,通过浏览器输入Web网址即可访问,对于使用者来说非常便捷,对于开发维护者来说也非常方便,程序维护只需更新服务器即可,使用者无 ...

  2. window 右键菜单中添加在vs code 打开

    原文链接: window 右键菜单中添加在vs code 打开 window 右键菜单中添加在vs code 打开 吃码小妖:以前安装VS code可以的,后面不知道为什么不能右键在VS code中打 ...

  3. docker加速器,设置cdn

    添加加速器 vim /etc/docker/daemon.json 添加如下内容 { "registry-mirrors": ["https://registry.doc ...

  4. yum clean all大坑解决

    在Centos7系统中执行yum clean all 之后,发现yum的其他执行都报错了: 要解决,关键在这里: 把/var/cache/yum/ 下面的文件删除了 接下来,如果执行yum repol ...

  5. c# 对 struct为什么不能继承类和结构的思考

    1.类.结构在使用的时候可以不调用构造函数,如果能够继承类,这种情况下不能够初始化基类,因为不执行构造函数 2.结构.所有的结构类型都默认是 sealed,通过 反汇编可以看到  ,这就阻止了结构被继 ...

  6. (转)致Java程序员:你离架构师还差多远?

    转至:https://blog.csdn.net/ityouknow/article/details/82782965 几乎每个Java程序员心中,都有着成为架构师的技术追求.那么,成为Java架构师 ...

  7. Storm重启topology,失败

    storm新加节点,重启topology后,出现错误 如果检查了CPU和内存不高后,还出现 java.lang.OutOfMemoryError: unable to create new nativ ...

  8. vue3.0入门(四):组件

    组件 组件基础 <my-counter></my-counter> const app = Vue.createApp({ // 根组件 data() { return {} ...

  9. 求证:-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} ...

  10. Nginx从安装到虚拟主机、https加密、重定向的设置

    编译前的设置: 在源代码文件中把版本号注释掉,这是为了防止针对特定版本的恶意攻击 关闭编译时的调试模式 解决编译前的依赖性 进行配置参数: 对参数进行解读: 编译和安装: 做软链接方便调用: 创建ng ...