Python操作MySQL+Redis+MongoDB
- 1-1 python操作三大主流数据库导学篇
- 1-2 数据库简介
- 1-3 MySQL简介
- 2-1 MySQL安装及配置
- 2-2 MySQL图形化管理工具
- 2-3 SQL语法基础-创建并使用数据库
- 2-4 SQL语法基础-创建表
- 2-5 SQL语法基础-修改和删除数据
- 2-6 设计新闻表
- 3-1 环境配置及依赖安装
- 3-2 Python连接MySQL数据库
- 3-3 Python查询MySQL数据库
- 3-4 Python更新MySQL数据库
- 4-1 ORM简介
- 4-2 SQLAlchemy安装
- 4-3 ORM模型介绍
- 4-4 新建ORM模型
- 4-5 通过ORM新增数据列到数据库
- 4-6 通过ORM查询数据
- 4-7 通过ORM修改和删除数据
- 5-1 项目概述
- 5-2 Flask入门
- 5-3 网易新闻框架搭建
- 5-4 网易新闻后台
- 5-5 网易新闻后台管理首页及分页
- 5-7 网易新闻数据修改
- 5-8 网易新闻数据删除
- 6-1 MongoDB基础知识
- 6-2 MongoDB的安装和配置
- 6-3 使用命令行操作数据库
- 6-4 练习
- 6-5 图形化管理工具
- 7-1 pymongo介绍和安装
- 7-2 使用Python连接数据库
- 7-3 使用Python新增数据到MongoDB
- 7-4 使用Python查询数据
- 7-5 使用Python修改数据
- 7-6 使用Python删除数据
- 8-1 MongoEngine的安装及连接
- 8-2 ODM模型介绍
- 9-1 通过ODM查询数据
- 9-2 通过ODM修改和删除数据
- 9-3 铜鼓ODM新增数据
- 10-1 实战项目简介及依赖安装
- 10-2 新闻前台
- 10-3 新闻前台首页及分页
- 10-4 新闻数据的新增
- 10-5 新闻数据的修改
- 10-6 新闻数据的删除
- 11-1 Redis介绍
- 11-2 Redis的安装
- 11-3 String类型相关操作
- 11-4 List类型数据相关操作
- 11-5 Set类型相关操作
- 11-6 Hash类型相关操作
- 11-7 图形化管理工具
- 12-1 redis-py的安装和连接
- 12-2 Python操作String类型相关命令
- 12-3 Python操作List类型相关命令
- 12-4 Python操作Set类型相关命令
- 12-5 Python操作Hash类型相关命令
- 13-1 实战项目介绍及分析
- 13-2 实现新闻数据的新增
- 13-3 新闻数据新增事物支持
- 13-4 新闻数据首页
- 13-5 新闻类别页和详情页
- 13-6 后台首页及分页
- 13-7 新闻数据的修改
- 13-8 新闻数据的删除
1-1 python操作三大主流数据库导学篇
1.1.1 祝大家学有所成!一门课程学习三大主流数据库。














1-2 数据库简介
1.2.1 数据库即存储数据的仓库;
1.2.2 数据库的分类之“关系型”和“非关系型”数据库;
12.3 EXCEL可以理解为关系型数据库-二维表之行和列;











1-3 MySQL简介
1.3.1 MySQL百度百科介绍:https://baike.baidu.com/item/mySQL/471251?fr=aladdin




2-1 MySQL安装及配置



2-2 MySQL图形化管理工具






2-3 SQL语法基础-创建并使用数据库
2.3.1 DDL&DML;
2.3.2 MySQL里面的注释:--;
2.3.3 使用反引号;




2-4 SQL语法基础-创建表

2-5 SQL语法基础-修改和删除数据





2-6 设计新闻表
2.6.1 设计新闻表;
- id-新闻的唯一标识
- title-新闻的标题
- content-新闻的内容
- types-新闻的类型
- created_at-新闻的添加时间
- image-新闻的缩略图
- author-新闻的作者
- view_count-新闻的浏览量
- 物理删除和逻辑删除(is_valid)
- is_valid-删除标记


3-1 环境配置及依赖安装


3-2 Python连接MySQL数据库




3-3 Python查询MySQL数据库

3-4 Python更新MySQL数据库

4-1 ORM简介
4.1.1 ORM百度百科:https://baike.baidu.com/item/ORM/3583252?fr=aladdin



4-2 SQLAlchemy安装



4-3 ORM模型介绍


4-4 新建ORM模型
4.4.1 SQLAlchemy百度百科:https://baike.baidu.com/item/SQLAlchemy/1269830
#!/usr/bin/python3
# -*- coding:utf-8 -*-
# Project: News
# Software: PyCharm
# Time : 2018-10-06 08:19
# File : models.py
# Author : 天晴天朗
# Email : tqtl@tqtl.org
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DateTime, Boolean Base = declarative_base() class News(Base):
"""
新闻类型
"""
__tablename__ = 'news'
id = Column(Integer, primary_key=True)
title = Column(String(200), nullable=False)
content = Column(String(2000), nullable=False)
types = Column(String(10), nullable=False)
image = Column(String(300), nullable=True)
author = Column(String(20))
view_count = Column(Integer)
created_at = Column(DateTime)
is_valid = Column(Boolean) def __repr__(self):
return "<News(name='%s')>" % self.title engine = create_engine("mysql+pymysql://root:Tqtl911!@#)^@127.0.0.1:3306/news?charset=utf8")
Base.metadata.create_all(engine)
4-5 通过ORM新增数据列到数据库
4.5.1 add_one向数据库中新增一条数据;
#!/usr/bin/python3
# -*- coding:utf-8 -*-
# Project: News
# Software: PyCharm
# Time : 2018-10-06 08:19
# File : models.py
# Author : 天晴天朗
# Email : tqtl@tqtl.org
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DateTime, Boolean engine = create_engine("mysql+pymysql://root:Tqtl911!@#)^@127.0.0.1:3306/news?charset=utf8")
Base = declarative_base()
Session = sessionmaker(bind=engine) class News(Base):
"""
新闻类型
"""
__tablename__ = 'news'
id = Column(Integer, primary_key=True)
title = Column(String(200), nullable=False)
content = Column(String(2000), nullable=False)
types = Column(String(10), nullable=False)
image = Column(String(300), nullable=True)
author = Column(String(20))
view_count = Column(Integer)
created_at = Column(DateTime)
is_valid = Column(Boolean) def __repr__(self):
return "<News(name='%s')>" % self.title Base.metadata.create_all(engine) class OrmTest(object):
def __init__(self):
self.session = Session() def add_one(self):
'''新增记录'''
new_obj = News(
title='标题',
content='内容',
types='百家',
)
self.session.add(new_obj)
self.session.commit()
return new_obj def main():
obj = OrmTest()
rest = obj.add_one()
print(rest.id) if __name__ == '__main__':
main()
4-6 通过ORM查询数据

#!/usr/bin/python3
# -*- coding:utf-8 -*-
# Project: News
# Software: PyCharm
# Time : 2018-10-06 08:19
# File : models.py
# Author : 天晴天朗
# Email : tqtl@tqtl.org
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DateTime, Boolean engine = create_engine("mysql+pymysql://root:Tqtl911!@#)^@127.0.0.1:3306/news?charset=utf8")
Base = declarative_base()
Session = sessionmaker(bind=engine) class News(Base):
"""
新闻类型
"""
__tablename__ = 'news'
id = Column(Integer, primary_key=True)
title = Column(String(200), nullable=False)
content = Column(String(2000), nullable=False)
types = Column(String(10), nullable=False)
image = Column(String(300), nullable=True)
author = Column(String(20))
view_count = Column(Integer)
created_at = Column(DateTime)
is_valid = Column(Boolean) def __repr__(self):
return "<News(name='%s')>" % self.title Base.metadata.create_all(engine) class OrmTest(object):
def __init__(self):
self.session = Session() def add_one(self):
'''新增记录'''
new_obj = News(
title='标题',
content='内容',
types='百家',
)
self.session.add(new_obj)
self.session.commit()
return new_obj def get_one(self):
'''查询到一条数据'''
return self.session.query(News).get(1) def get_all(self):
'''查询多条数据'''
return self.session.query(News).filter_by(is_valid=True) def main():
# obj = OrmTest()
# rest = obj.add_one()
# print(rest.id) # obj = OrmTest()
# rest = obj.get_one()
# if rest:
# print('ID:{0}=>{1}'.format(rest.id, rest.title))
# else:
# print("Not Exist!") obj = OrmTest()
rest = obj.get_all()
for i in rest:
print('ID:{0}=>{1}'.format(i.id, i.title)) if __name__ == '__main__':
main()
4-7 通过ORM修改和删除数据

#!/usr/bin/python3
# -*- coding:utf-8 -*-
# Project: News
# Software: PyCharm
# Time : 2018-10-06 08:19
# File : models.py
# Author : 天晴天朗
# Email : tqtl@tqtl.org
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DateTime, Boolean engine = create_engine("mysql+pymysql://root:Tqtl911!@#)^@127.0.0.1:3306/news?charset=utf8")
Base = declarative_base()
Session = sessionmaker(bind=engine) class News(Base):
"""
新闻类型
"""
__tablename__ = 'news'
id = Column(Integer, primary_key=True)
title = Column(String(200), nullable=False)
content = Column(String(2000), nullable=False)
types = Column(String(10), nullable=False)
image = Column(String(300), nullable=True)
author = Column(String(20))
view_count = Column(Integer)
created_at = Column(DateTime)
is_valid = Column(Boolean) def __repr__(self):
return "<News(name='%s')>" % self.title Base.metadata.create_all(engine) class OrmTest(object):
def __init__(self):
self.session = Session() def add_one(self):
'''新增记录'''
new_obj = News(
title='标题',
content='内容',
types='百家',
)
self.session.add(new_obj)
self.session.commit()
return new_obj def get_one(self):
'''查询到一条数据'''
return self.session.query(News).get(1) def get_all(self):
'''查询多条数据'''
return self.session.query(News).filter_by(is_valid=True) def update_data(self, pk):
'''修改数据'''
new_obj = self.session.query(News).get(pk)
if new_obj:
new_obj.is_valid = 0
self.session.add(new_obj)
self.session.commit()
return True
return False def update_all(self, pk):
'''修改多条数据'''
data_list = self.session.query(News).filter_by(is_valid=True)
for item in data_list:
item.is_valid = 0
self.session.add(item)
self.session.commit() def delete_data(self, pk):
'''删除数据'''
new_obj = self.session.query(News).get(pk)
self.session.delete(new_obj)
self.session.commit() def delete_all(self, pk):
'''删除全部数据'''
data_list = self.session.query(News).all()
for item in data_list:
self.session.delete(item)
self.session.commit() def main():
# obj = OrmTest()
# rest = obj.add_one()
# print(rest.id) # obj = OrmTest()
# rest = obj.get_one()
# if rest:
# print('ID:{0}=>{1}'.format(rest.id, rest.title))
# else:
# print("Not Exist!") # obj = OrmTest()
# rest = obj.get_all()
# for i in rest:
# print('ID:{0}=>{1}'.format(i.id, i.title))
obj = OrmTest()
print(obj.update_data(1)) if __name__ == '__main__':
main()
5-1 项目概述





flask中文官方文档:https://dormousehole.readthedocs.io/en/latest/
5-2 Flask入门



一个最小的应用;
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run(debug=True)
5-3 网易新闻框架搭建
# !/usr/bin/python3
# -*- coding:utf-8 -*-
# Project: News
# Software: PyCharm
# Time : 2018-10-06 08:50
# File : news.py
# Author : 天晴天朗
# Email : tqtl@tqtl.org
from flask import Flask
from flask_sqlalchemy import SQLAlchemy app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:Tqtl911!@#)^@127.0.0.1/news?charset=utf8'
db = SQLAlchemy(app) class News(db.Model):
"""
新闻类型
"""
__tablename__ = 'news'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(200), nullable=False)
content = db.Column(db.String(2000), nullable=False)
types = db.Column(db.String(10), nullable=False)
image = db.Column(db.String(300), nullable=True)
author = db.Column(db.String(20))
view_count = db.Column(db.Integer)
created_at = db.Column(db.DateTime)
is_valid = db.Column(db.Boolean) def __repr__(self):
return "<News %r>" % self.title

5-4 网易新闻后台
5-5 网易新闻后台管理首页及分页

5-7 网易新闻数据修改
5-8 网易新闻数据删除
6-1 MongoDB基础知识
6-2 MongoDB的安装和配置
6-3 使用命令行操作数据库
6-4 练习
6-5 图形化管理工具
7-1 pymongo介绍和安装
7-2 使用Python连接数据库
7-3 使用Python新增数据到MongoDB
7-4 使用Python查询数据
7-5 使用Python修改数据
7-6 使用Python删除数据
8-1 MongoEngine的安装及连接
8-2 ODM模型介绍
9-1 通过ODM查询数据
9-2 通过ODM修改和删除数据
9-3 铜鼓ODM新增数据
10-1 实战项目简介及依赖安装
10-2 新闻前台
10-3 新闻前台首页及分页
10-4 新闻数据的新增
10-5 新闻数据的修改
10-6 新闻数据的删除
11-1 Redis介绍
11-2 Redis的安装
11-3 String类型相关操作
11-4 List类型数据相关操作
11-5 Set类型相关操作
11-6 Hash类型相关操作
11-7 图形化管理工具
12-1 redis-py的安装和连接
12-2 Python操作String类型相关命令
12-3 Python操作List类型相关命令
12-4 Python操作Set类型相关命令
12-5 Python操作Hash类型相关命令
13-1 实战项目介绍及分析
13-2 实现新闻数据的新增
13-3 新闻数据新增事物支持
13-4 新闻数据首页
13-5 新闻类别页和详情页
13-6 后台首页及分页
13-7 新闻数据的修改
13-8 新闻数据的删除
Python操作MySQL+Redis+MongoDB的更多相关文章
- python连接MySQL/redis/mongoDB数据库的简单整理
python连接mysql 用python操作mysql,你必须知道pymysql 代码示意: import pymysql conn = pymysql.connect(host='127.0.0. ...
- 爬虫(九):python操作MySQL、MongoDB
1. python操作MySQL 1.1 MySQL基础 在java基础部分就写过了. https://www.cnblogs.com/liuhui0308/p/11891844.html 1.2 p ...
- python操作mysql,redis
import pymysqlip ="127.0.0.1"#数据库地址user = 'username'#数据库用户名password="pwd"#数据库密码d ...
- python mysql redis mongodb selneium requests二次封装为什么大都是使用类的原因,一点见解
1.python mysql redis mongodb selneium requests举得这5个库里面的主要被用户使用的东西全都是面向对象的,包括requests.get函数是里面每次都是实例 ...
- 06 python操作MySQL和redis(进阶)
python操作mysql.redis 阶段一.mysql事务 主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息, ...
- Python操作Mysql实例代码教程在线版(查询手册)_python
实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...
- 实战接口开发:python + flask + mysql + redis(根据反馈,持续细化更新。。。)
前言 自动化已经成为测试的必备技能之一了,所以,很多想跳槽的测试朋友都在自学,特别是最实用的接口自动化, 但是很多人因为没有可以练手的项目而苦恼,最终导致缺乏实战经验,其实,完全可以自己开发个简单项目 ...
- Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- 练习:python 操作Mysql 实现登录验证 用户权限管理
python 操作Mysql 实现登录验证 用户权限管理
随机推荐
- 【MFC】可以换行的编辑框
在mfc中编辑框允许输入多行时,换行符被表示为<归位><换行>即“\r\n”,用ascii码表示为13 10 如果为编辑框中想要输入换行,就请将编辑框的属性: Auto HSc ...
- pta编程题5 Pop Sequence
第一次提交结果都是YES,后来检查发现Push,Pop函数写的有问题,即Stack sta改为引用Stack &sta,否则不能改变实参的值. #include <iostream> ...
- linux 命令——48 watch (转)
watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...
- spring-autowire机制
在xml配置文件中,autowire有5种类型,可以在<bean/>元素中使用autowire属性指定 模式 说明 no ...
- 【BZOJ1057】[ZJOI2007] 棋盘制作(单调栈的运用)
点此看题面 大致题意: 给你一个\(N*M\)的\(01\)矩阵,要求你分别求出最大的\(01\)相间的正方形和矩形(矩形也可以是正方形),并输出其面积. 题解 这题第一眼看去没什么思路,仔细想想,能 ...
- WQS二分学习笔记
前言 \(WQS\)二分听起来是个很难的算法,其实学起来也并不是那么难. 适用范围 在某些题目中,会对于某个取得越多越优的物品,限定你最多选择\(k\)个,问你能得到的最优答案. 例如这道题目:[CF ...
- Mybatis-连接池与事务
Mybatis 的连接池技术 Mybatis 将它自己的数据源分为三类: UNPOOLED 不使用连接池的数据源 POOLED 使用连接池的数据源 JNDI 使用 JNDI 实现的数据源 Mybati ...
- 题解 CF656G 【You're a Professional】
又是一道假黑题 它教会我们不要看难度标签 虽然这道题的数据范围很小,用cin能过,但我还是要讲一下快读 快读嘛,顾名思义,就是 快速读入 的意思 有同学就会问了,快速读入的原理是什么? 答:它的原理其 ...
- 阿里云服务器下安装LAMP环境(CentOS Linux 6.3) 安装与配置 Apache 服务
想让我们的阿里云服务器成为一台 Web 服务器,我们需要安装一个 Web 服务器软件,比如 Apache ,或者 Nginx 等等.下面我们就一起来安装一个 Apache 服务. 我们可以使用 yum ...
- 移动端rem匹配
Rem是相对于根元素font-size大小的单位 记inphone5屏幕宽度是 320px font-size16px 1rem=16px <html> <head> ...