热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

本博文使用的数据库是MySQL和MongoDB数据库。安装MySQL可以参照我的这篇博文:https:www.cnblogs.comtszrp12112777.htm

本博文使用的数据库是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==&#39;&#39;).one()

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

print(&#39;name:&#39;,student.name)

#在数据库表中更新数据

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

session.commit()

print(&#39;修改成功&#39;)

#查询并删除数据

session.query(Product).filter(Product.ID==&#39;&#39;).delete()

session.commit()

print(&#39;删除成功&#39;)

#最后关闭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(&#39;月成交 (.*?)&#39;,strhtm)

print(ycjl)

#找出所有商品的价格

price = re.findall(&#39;¥(.*?)&#39;,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 = {

&#39;name&#39;:name[i],

&#39;price&#39;:list_price[i],

&#39;ycjl&#39;: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通过“任务计划程序”实现定时自动下载或更新运行 PM2.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:Service Provider Access is not available.

在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 ...



推荐阅读
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 本文详细探讨了HTTP 500内部服务器错误的成因、解决方案及其在Web开发中的影响。通过对具体案例的分析,帮助读者理解并解决此类问题。 ... [详细]
  • 深入理解Shell脚本编程
    本文详细介绍了Shell脚本编程的基础概念、语法结构及其在操作系统中的应用。通过具体的示例代码,帮助读者掌握如何编写和执行Shell脚本。 ... [详细]
  • 如何使用PyCharm及常用配置详解
    对于一枚pycharm工具的使用新手,正确了解这门工具的配置及其使用,在使用过程中遇到的很多问题也可以迎刃而解,文中有非常详细的介绍, ... [详细]
author-avatar
mobiledu2502920897
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有