本博文使用的数据库是MySQL和MongoDB数据库。安装MySQL可以参照我的这篇博文:https://www.cnblogs.com/tszr/p/12112777.html

其中操作Mysql使用到的python模块是pymysql,下面是有关这个模块的使用说明:

创建一个数据库test

create DATABASE taobao;

Navicat for MySQL功能:

1.Navicat for MySQL支持创建工具或编辑器数据模型工具

2.支持数据传输/导入/导出、数据或结构同步等

3.Navicat for MySQL支持查询参数

4.Navicat for MySQL支持SSH密钥等

5.界面设计直观简洁,兼容性强

6.专业:适合专业人士,也非常适合入门新手使用

下面开始安装这个软件:

Navicat for MySQL使用方法

1、打开安装好的Navicat for MySQL,打开软件后,点击【连接】选项

下面是将sale_data.txt这份文件的数据导入到MySQL taobao数据库中

可以看到数据已经成功导入到数据库里面了。

下面修改数据库ID这个字段,修改为可以自动增加的。

选中左边数据表 鼠标右键选择:设计表就可以出现上面的这个界面了。修改后记得要保存。

接下来就可以使用代码来操作数据库了。

import pymysql

#连接数据库

db = pymysql.Connect(host="localhost",port=3306,user="root",password="admin",db="taobao",charset="utf8")

print("连接成功!")

#查询商品在江、浙、沪的销量

#获取游标

cursor = db.cursor()

#执行SQL语句进行查询

sql = "SELECT * FROM sale_data where 位置 IN (%s,%s,%s)"

cursor.execute(sql,("江苏","浙江","上海"))

#获取查询结果

result = cursor.fetchall()

for item in result:

print(item)

#删除价格低于100的商品

sql = "delete from sale_data where 价格<100"

cursor.execute(sql)

#没有设置默认自动提交,所以这里需要主动提交,以保存执行后的结果在数据库

db.commit()

print("删除成功!")

#把位置是江苏、浙江、上海的统一修改为:江浙沪,代码如下:

sql = "update sale_data set 位置 = %s where 位置 in (%s,%s,%s)"

cursor.execute(sql,("江浙沪","江苏","浙江","上海"))

db.commit()

print("修改成功!")

#添加一条新的销售记录

sql = "insert into sale_data(宝贝,价格,成交量,卖家,位置) values (%s,%s,%s,%s,%s)"

cursor.execute(sql,("2017夏季连衣裙",223,1897,"XX天猫","乌鲁木齐"))

db.commit()

print("添加成功!")

#关闭数据库连接

cursor.close()

db.close()

使用SQLAlchemy库

SQLAlchemy的基本语法:

新建一个person表

CREATE TABLE IF NOT EXISTS person (ID int PRIMARY KEY AUTO_INCREMENT,name varchar(10) not null,age int not null);

可以看到person表已经成功创建了。

然后写代码。

from sqlalchemy.orm import sessionmaker

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy import create_engine,Column,Integer,String

DIALCT = "mysql"

DRIVER = "pymysql"

USERNAME = "root"

PASSWORD = "admin"

HOST = "127.0.0.1"

PORT = ""

DATABASE = "taobao"

DB_URI="{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALCT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)

engine = create_engine(DB_URI)

Base = declarative_base(engine)

# 创建session 会话对象

session = sessionmaker(engine)()

class Person(Base):

__tablename__ = "person"

ID = Column(Integer,primary_key=True,autoincrement=True)

name = Column(String(10),nullable=False)

age = Column(Integer,nullable=False)

#定义__repr__方法:将对象的属性方法打印成一个可读字符串

def __repr__(self):

return "ID:%s,name:%s,age:%s," % (self.ID,self.name,self.age)

# 添加数据

def add_data():

# 向表中添加一条数据

person = Person(name="jack",age=20)

session.add(person)

# 添加数据后、数据保存到电脑内存上,并没有添加到数据库中,需使用 session.commit() 方法将数据提交到数据库中。

session.commit()

add_data()

然后运行代码。

可以看到已经成功添加进入这条记录了。

再建立一张Product表:

CREATE TABLE IF NOT EXISTS Product (ID int PRIMARY KEY AUTO_INCREMENT,name varchar(20) not null);

from sqlalchemy.orm import sessionmaker

from sqlalchemy import Column,String,create_engine

from sqlalchemy.ext.declarative import declarative_base

#创建对象的基类

Base = declarative_base()

#定义Product对象

class Product(Base):

#表名称

__tablename__ = "Product"

#表结构

ID = Column(String(20),primary_key = True)

name = Column(String(20))

#定义__repr__方法:将对象的属性方法打印成一个可读字符串

def __repr__(self):

return "ID:%s,name:%s,age:%s," % (self.ID,self.name)

#初始化数据库连接

engine = create_engine("mysql+pymysql://root:admin@localhost:3306/taobao")

#创建DBSession类型

DBSession = sessionmaker(bind=engine)

#创建session对象,DBSession对象可视为当前数据库的连接

session = DBSession()

#创建新Product对象

new_user = Product(ID="",name="豪华餐厅")

#添加到session

session.add(new_user)

#提交即保存到数据库中

session.commit()

可以看到已经成功把数据添加到数据库了。

#从数据库表中查询数据

#创建Query查询,filter是where条件,最后调用one()返回唯一一行,如果调用all()则返回所有行

student = session.query(Product).filter(Product.ID=='').one()

#打印对象的name,class.name属性

print('name:',student.name)

#在数据库表中更新数据

session.query(Product).filter(Product.ID=='').update({Product.name:'北京100天自由行'})

session.commit()

print('修改成功')

#查询并删除数据

session.query(Product).filter(Product.ID=='').delete()

session.commit()

print('删除成功')

#最后关闭Session

session.close()

再回到person表的操作:

# 向表中添加多条数据(如需添加多条数据、只需使用add_all方法将多条数据添加到一个列表即可)

person1 = Person(name = "blue" , age = 30)

person2 = Person(name = "tom" , age = 23)

session.add_all([person1,person2])

session.commit()

print("添加成功")

#查询数据

def select_data():

# 查询表中所有数据

results = session.query(Person).all()

for r in results:

print(r)

select_data()

# 查询表中第一条数据

first = session.query(Person).first()

print(first)

# 查询表中name为tom的第一条数据

result = session.query(Person).filter_by(name = "tom").first()

print(result)

# 查询表中年龄大于20的数据(结果为list,故用for循环遍历)

results = session.query(Person).filter(Person.age > 20).all()

for r in results:

print(r)

# filter: 多用于简单查询,filter_by:用于复杂查询,使用filter_by作为查询过滤条件时,需在前面添加对象名,如Person.age

#修改数据

def update_date():

# 查询表中第一条数据,将其姓名修改为 tlj

result = session.query(Person).first()

result.name = "tlj"

session.commit()

print(result)

update_date()

#删除数据

def del_data():

result = session.query(Person).first()

session.delete(result)

session.commit()

print("删除成功")

del_data()

下面是有关MongoDB数据库的操作。

下面是基本语法的使用:

#加载库

import pymongo

#建立连接

client = pymongo.MongoClient("localhost",27017)

#新建数据库

db = client["db_name"]

#新建表

table = db["table_name"]

#写入数据

table.insert({"key1":"一","key2":"二"})

#删除数据

table.remove({"key1":"一"})

#修改数据

table.update({"key2":"二"},{"$set":{"key2":"二","key5":"五"}})

#查询数据

table.find({"key5":""})

下面是爬取天猫连衣裙数据保存到MongoDB

#在某电商网站搜索连衣裙的商品数据,并把第一页商品数据抓取下来保存到MongoDB中

import pymongo

import requests

client = pymongo.MongoClient("localhost",271017)

#新建数据库

taobao = client["taobao"]

#新建表

search_result = taobao["search_result"]

#爬取某电商网站商品数据

url = "https://list.tmall.com/search_product.htm?q=%C1%AC%D2%C2%C8%B9&type=p&vmarket=&spm=a2156.1676643.a2227oh.d100&from=mallfp..pc_1_searchbutton"

strhtml=requests.get(url)

#转变数据类型

strhtm = strhtml.text

#导入re库

import re

#查找所有月成交量

ycjl = re.findall('月成交 (.*?)',strhtm)

print(ycjl)

#找出所有商品的价格

price = re.findall('¥(.*?)',strhtm)

list_price = []

for item in price:

list_price.append(item[0])

print(list_price)

#保存所有的商品名称

a = "\n(.*?)\n"

b = re.findall(a,strhtm)

c = dict(b)

name = []

for i in c:

name.append(c[i])

numb = min(len(name),len(list_price),len(ycjl))

for i in range(0,numb):

json_data = {

'name':name[i],

'price':list_price[i],

'ycjl':ycjl[i]

}

print(json_data)

#写入数据

search_result.insert(json_data)

吴裕雄--天生自然python学习笔记:Python3 MySQL 数据库连接 - PyMySQL 驱动

什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. PyMySQL 遵循 Python 数据库 AP ...

吴裕雄--天生自然PYTHON爬虫:安装配置MongoDBy和爬取天气数据并清洗保存到MongoDB中

1.下载MongoDB 官网下载:https://www.mongodb.com/download-center#community 上面这张图选择第二个按钮 上面这张图直接Next 把bin路径添加 ...

吴裕雄--天生自然PYTHON爬虫:使用BeautifulSoup解析中国旅游网页数据

import requests from bs4 import BeautifulSoup url = "http://www.cntour.cn/" strhtml = requ ...

吴裕雄--天生自然python学习笔记:python用 Bokeh 模块绘制我国 GDP 数据统计图

现在我们把我国 1990 年到 2017 年的 GDP 数据抓取出 来,井用 Bokeh 绘 出散点统计图 . 由网页爬取所需数据,并用 Bokeh 绘制散点图 . import requests # ...

吴裕雄--天生自然python学习笔记:WEB数据抓取与分析

Web 数据抓取技术具有非常巨大的应用需求及价值, 用 Python 在网页上收集数据,不仅抓取数据的操作简单, 而且其数据分析功能也十分强大. 通过 Python 的时lib 组件中的 urlpar ...

吴裕雄--天生自然python学习笔记:python通过&OpenCurlyDoubleQuote;任务计划程序”实现定时自动下载或更新运行 PM2&period;5 数据抓取程序数据

在 Windows 任务计划程序中,设置每隔 30 分钟自动抓取 PM2.5 数据,井保存 在 SQLite 数据库中 . import sqlite3,ast,requests,os from bs ...

吴裕雄--天生自然PYTHON爬虫:使用Selenium爬取大型电商网站数据

用python爬取动态网页时,普通的requests,urllib2无法实现.例如有些网站点击下一页时,会加载新的内容,但是网页的URL却没有改变(没有传入页码相关的参数),requests.urll ...

吴裕雄--天生自然python学习笔记:爬取我国 1990 年到 2017年 GDP 数据并绘图显示

绘制图形所需的数据源通常是不固定的,比如,有时我们会需要从网页抓取, 也可能需从文件或数据库中获取. 利用抓取网页数据技术,把我国 1990 年到 2016 年的 GDP 数据抓取出来 ,再利用 Ma ...

吴裕雄--天生自然python机器学习:决策树算法

我们经常使用决策树处理分类问题’近来的调查表明决策树也是最经常使用的数据挖掘算法. 它之所以如此流行,一个很重要的原因就是使用者基本上不用了解机器学习算法,也不用深究它 是如何工作的. K-近邻算法可 ...

随机推荐

matlab中pcolorh函数作用

就是说X,Y是用来定位的,C是用来填充颜色的.参数C要求至少是一个矩阵,而参数X,Y可以是向量,也可以是矩阵.当X,Y是向量时,X与C的行对应,Y与C的列对应,因此向量X与Y的维数必须要求与C的行与列 ...

清理mac本内存

如果你很久没有删除xcode的缓存文件,由于你每天要运行新的xcode文件,那么你的硬盘空间会越来越小,位于/Users/*home名称*/Library/Developer/Xcode/Derive ...

SOA Integration Repository Error&colon;Service Provider Access is not available&period;

在Oracle EBS Integration Repository中,打开一个Webservice,报了一个警告. 英文: Warning Service Provider Access is no ...

glusterFS的常用命令 (转)

1.       启动/关闭/查看glusterd服务 # /etc/init.d/glusterd start # /etc/init.d/glusterd stop # /etc/init.d/g ...

Photo Kit 框架

http://geek.csdn.net/news/detail/56031 http://www.jianshu.com/p/9988303b2429 http://blog.sina.com.cn ...

WINDOWS 7下安装CVXOPT

闹腾了好几天,终于将CVXOPT安装成功,这里和大家分享安装过程: 从www.python.org下载并安装Python.接下来,使用Python 2.7.5(32bit)版本(注意:64位win 7 ...

XMPP通讯开发-服务器好友获取以及监听状态变化

在 XMPP通讯开发-好友获取界面设计   我们设计了放QQ的列表功能,这里我们获取我们服务器上的 数据. 这一部分知识我们可以查看smack_3_3_0/smack_3_3_0/documentat ...

不用splitter控件 简单实现对mfc对话框的分割的方法

不用splitter控件  简单实现对mfc对话框的分割的方法 直接贴上源代码主要部分吧 这个是基于对话框的工程 进行对话框的分割实现 只是相应了三个消息函数,看一下就会明白的 我空间资源里边有现成的 ...

仿9GAG制作过程(二)

有话要说: 这次准备讲述用python爬虫以及将爬来的数据存到MySQL数据库的过程,爬的是煎蛋网的无聊图. 成果: 准备: 下载了python3.7并配置好了环境变量 下载了PyCharm作为开发p ...

mysql 查询 系统字段 自然日_吴裕雄--天生自然python数据清洗与数据可视化:MYSQL、MongoDB数据库连接与查询、爬取天猫连衣裙数据保存到MongoDB...相关推荐

  1. python电商爬虫源码_吴裕雄--天生自然PYTHON爬虫:爬取某一大型电商网站的商品数据...

    由于这里的目标是获取整个自由行的产品列表,因此还需要获取出发站点的列表,从不同的城市出发,会有不用的产品. 返回自由行的首页,单击搜索框左侧的出发站点,如下图: 切换到Headers界面: 可以看到此 ...

  2. python预测疾病_吴裕雄--天生自然python机器学习:使用Logistic回归从疝气病症预测病马的死亡率...

    ,除了部分指标主观和难以测量外,该数据还存在一个问题,数据集中有 30%的值是缺失的.下面将首先介绍如何处理数据集中的数据缺失问题,然 后 再 利 用 Logistic回 归 和随机梯度上升算法来预测 ...

  3. 吴裕雄--天生自然 PHP开发学习:MySQL 插入数据

    <?php $servername = "localhost"; $username = "root"; $password = "admin& ...

  4. 吴裕雄--天生自然 HADOOP大数据分布式处理:修改CenterOS 7系统时间为北京时间

    转载于:https://www.cnblogs.com/tszr/p/11199134.html

  5. 吴裕雄--天生自然 中医研究学习:入门

    中医学是研究人体生理病理,疾病诊断与防治以及摄生康复的一门医学科学,至今已有数千年的历史.中医学是"以中医药理论与实践经验为主体,研究人类生命活动中医学中健康与疾病转化规律及其预防.诊断.治 ...

  6. 吴裕雄--天生自然 诗经:长恨歌

    长恨歌[作者]白居易 [朝代]唐汉皇重色思倾国,御宇多年求不得.杨家有女初长成,养在深闺人未识.天生丽质难自弃,一朝选在君王侧.回眸一笑百媚生,六宫粉黛无颜色.春寒赐浴华清池,温泉水滑洗凝脂.侍儿扶起 ...

  7. 吴裕雄--天生自然 诗经:正气歌

    正气歌[作者]文天祥 [朝代]宋余囚北庭,坐一土室.室广八尺,深可四寻.单扉低小,白间短窄,污下而幽暗.当此夏日,诸气萃然:雨潦四集,浮动床几,时则为水气:涂泥半朝,蒸沤历澜,时则为土气:乍晴暴热,风 ...

  8. 吴裕雄--天生自然 高等数学学习:无穷级数

    转载于:https://www.cnblogs.com/tszr/p/11171448.html

  9. 吴裕雄--天生自然 JAVASCRIPT开发学习:DOM EventListener

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

最新文章

  1. ASP.NET那点不为人知的事(四)
  2. 插件框架Extensible Framework for Delphi
  3. 设计一个简单的空间配置器
  4. jvm性能调优 - 15JVM的老年代垃圾回收器CMS的缺点
  5. Linux scp -r命令主机间文件复制
  6. Exchange 2013如何自建管理员角色
  7. php 字符型转变为数值,php怎么把字符串转换为数值?
  8. ABP从入门到精通(3):aspnet-zero-core 使用Redis缓存
  9. eclipse-java-2019-12-R-win32-x86_64分享
  10. java之jsoup爬虫
  11. Chrome浏览器安装IE_Tab
  12. 打包openstack of opencontrail
  13. python程序设计从基础到开发课后题答案夏敏捷_Python程序设计——从基础到开发...
  14. 如何解密Token?
  15. 华三模拟器 HCL v5.3.0 使用第三方控制台(SecureCRT、XShell、MobaXterm)教程
  16. 微信豆有什么作用?微信豆怎么用?附攻略
  17. 巅峰对决:node.js和php性能测试
  18. jedi-vim --- vim python 自动补全工具安装
  19. 视频驱动V4L2子系统驱动架构 - 驱动框架
  20. Textstudio 应用程序无法正常启动0xc000007b

热门文章

  1. 壁纸wallpaper透视壁纸王者荣耀透视壁纸mpkg
  2. 喀什大学计算机教师,新疆喀什大学教师巴努来校挂职
  3. EPR与自由基捕获实验
  4. 信息学奥赛一本通 细胞
  5. 安卓开发笔记(三十三):Android仿写微信发现
  6. Hadoop集群扩容新增4T硬盘(解决分区大小问题限制2T问题)
  7. 面对二维码地推无法分辨地区之间的优劣,我们该怎么做!
  8. STM32 的PWM“死区”波形(产生规律)
  9. j2ee上机任务汇总(上)
  10. 旅游线路设计html,教学旅游线路设计方案