热门标签 | 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 ...



推荐阅读
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • Vue 2 中解决页面刷新和按钮跳转导致导航栏样式失效的问题
    本文介绍了如何通过配置路由的 meta 字段,确保 Vue 2 项目中的导航栏在页面刷新或内部按钮跳转时,始终保持正确的 active 样式。具体实现方法包括设置路由的 meta 属性,并在 HTML 模板中动态绑定类名。 ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
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社区 版权所有