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



推荐阅读
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • Java连接MySQL数据库的方法及测试示例
    本文详细介绍了如何安装MySQL数据库,并通过Java编程语言实现与MySQL数据库的连接,包括环境搭建、数据库创建以及简单的查询操作。 ... [详细]
  • 本文介绍了如何使用Node.js通过两种不同的方法连接MongoDB数据库,包括使用MongoClient对象和连接字符串的方法。每种方法都有其特点和适用场景,适合不同需求的开发者。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • 本文介绍了Tomcat的基本操作,包括启动、关闭及首次访问的方法,并详细讲解了如何在IDEA中创建Web项目,配置Servlet及其映射,以及如何将项目部署到Tomcat。 ... [详细]
  • 本文基于Java官方文档进行了适当修改,旨在介绍如何实现一个能够同时处理多个客户端请求的服务端程序。在前文中,我们探讨了单客户端访问的服务端实现,而本篇将深入讲解多客户端环境下的服务端设计与实现。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 本文介绍了如何在两个Oracle数据库(假设为数据库A和数据库B)之间设置DBLink,以便能够从数据库A中直接访问和操作数据库B中的数据。文章详细描述了创建DBLink前的必要准备步骤以及具体的创建方法。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
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社区 版权所有