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



推荐阅读
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文深入探讨了如何通过调整InnoDB的关键配置参数来优化MySQL的随机IO性能,涵盖了缓存、日志文件、预读机制等多个方面,帮助读者全面提升数据库系统的性能。 ... [详细]
  • MySQL 用户创建失败的解决方案
    本文详细介绍了在 MySQL 中遇到用户创建失败问题时的解决方法,包括如何正确配置环境、执行命令以及常见错误排查技巧。通过逐步指导,帮助用户顺利添加和管理 MySQL 用户。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
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社区 版权所有