做有温度的教育!
全国统一咨询热线:400-803-9399
北京
校区
新闻资讯> 技术分享> Mysql数据库与Python

Mysql数据库与Python

时间:2018-11-20
浏览:32436
发布:甲骨文华育兴业
赞:4116

在众多数据库中 mysql作为开源数据库中使用率最高的一直受到各界的欢迎,作为大数据流行的当下mysql和python又会碰撞出怎样的火花呢?我们一起来看看!


数据库的基本操作

  cmd命令行下输入以下命令

  登陆

  mysql -u root -p

  密码 (输自己安装时候设置的)

  就可以看到登陆成功的界面

   甲骨文华育兴业

  创建数据库

  【python操作时候先要创建好数据库,所以这一步必不可少】

  create database 数据库名 [其他选项];

  例如我们需要创建一个名为 samp_db 的数据库

  create database samp_db

  create database samp_db character set gbk;可以加上指定的编码类型

  show databases; 命令查看已经创建了哪些数据库。

  两种方式对数据库进行使用的选择:

  一:在登录数据库时指定, 命令: mysql -D 所选择的数据库名 -h 主机名 -u 用户名 -p

  例如登录时选择刚刚创建的数据库: mysql -D samp_db -u root -p

  二:在登录后使用 use 语句指定, 命令: use 数据库名;

  use 语句可以不加分号, 执行 use samp_db 来选择刚刚创建的数据库, 选择成功后会提示: Database changed

  创建数据库表

  使用 create table 语句可完成对表的创建, create table 的常见形式:

  create table 表名称(列声明);

  以创建 students 表为例, 表中将存放 学号(id)、姓名(name)、性别(sex)、年龄(age)、联系电话(tel) 这些内容:

  create table students

  (

  id int unsigned not null auto_increment primary key,

  name char(100) not null,

  sex char(10) not null,

  age tinyint unsigned not null,

  tel char(13) null default “-”

  );

  show variables like ‘char%’; 查看编码值

  set names ‘gbk’; 更改编码(可以解决输入中文乱码情况)

  show tables; 命令可查看已创建了表的名称;

  describe 表名; 命令可查看已创建的表的详细信息。

  插入信息

  insert into students values(NULL, “王刚”, “男”, 20, “13811371377”);插入每列项的值的情况

  insert into students (name, sex, age) values(“孙丽华”, “女”, 21);插入其中列的值

  查看表信息

  查表中的name,age的信息.

  select name, age from students;

  也可以使用通配符 * 查询表中所有的内容, 语句:

  select * from students;

  以查询所有性别为女的信息为例, 输入查询语句:

  select * from students where sex=“女”;

  where 子句不仅仅支持 “where 列名 = 值” 这种名等于值的查询形式, 对一般的比较运算的运算符都是支持的,

  例如 =、>、<、>=、<、!= 以及一些扩展运算符 is [not] null、in、like 等等。

  还可以对查询条件使用 or 和 and 进行组合查询

  select * from students where id<5 and age>20;

  更新表中的数据

  使用示例:

  将id为5的手机号改为默认的"-": update students set tel=default where id=5;

  将所有人的年龄增加1: update students set age=age+1;

  将手机号为 13288097888 的姓名改为 “张伟鹏”, 年龄改为 19: update students set name=“张伟鹏”, age=19 where tel=“13288097888”;

  删除表中的数据

  delete 语句用于删除表中的数据, 基本用法为:

  delete from 表名称 where 删除条件;

  使用示例:

  删除id为2的行: delete from students where id=2;

  删除所有年龄小于21岁的数据: delete from students where age<20;

  删除表中的所有数据: delete from students;

  创建后表的修改

  添加列

  在表的最后追加列 address: alter table students add address char(60);

  在名为 age 的列后插入列 birthday: alter table students add birthday date after age;

  修改列

  基本形式: alter table 表名 change 列名称 列新名称 新数据类型;

  示例:

  将表 tel 列改名为 telphone: alter table students change tel telphone char(13) default “-”;

  将 name 列的数据类型改为 char(16): alter table students change name name char(16) not null;

  删除列

  基本形式: alter table 表名 drop 列名称;

  示例:

  删除 birthday 列: alter table students drop birthday;

  重命名表

  基本形式: alter table 表名 rename 新表名;

  示例:

  重命名 students 表为 workmates: alter table students rename workmates;

  删除整张表

  基本形式: drop table 表名;

  示例: 删除 workmates 表: drop table workmates;

  删除整个数据库

  基本形式: drop database 数据库名;

  示例: 删除 samp_db 数据库: drop database samp_db;

  修改 root 用户密码

  使用 mysqladmin 方式:

  打开命令提示符界面, 执行命令: mysqladmin -u root -p password 新密码

  执行后提示输入旧密码完成密码修改, 当旧密码为空时直接按回车键确认即可。

  可视化管理工具 MySQL Workbench

  尽管我们可以在命令提示符下通过一行行的输入或者通过重定向文件来执行mysql语句, 但该方式效率较低,

  由于没有执行前的语法自动检查, 输入失误造成的一些错误的可能性会大大增加,

  这时不妨试试一些可视化的MySQL数据库管理工具, MySQL Workbench

  就是 MySQL 官方 为 MySQL 提供的一款可视化管理工具, 你可以在里面通过可视化的方式直接管理数据库中的内容,

  并且 MySQL Workbench 的 SQL 脚本编辑器支持语法高亮以及输入时的语法检查, 当然, 它的功能强大, 绝不仅限于这两点。

  MySQL Workbench官方介绍: http://www.mysql.com/products/workbench/

  MySQL Workbench 下载页: http://dev.mysql.com/downloads/tools/workbench/

  三、python代码连接数据库

  1、安装pymysql库

  cmd运行pip install pymysql

  2、代码建表

  import pymysql

  db = pymysql.connect("localhost", "root", "admin", "test1")#admin为自己数据库密码,test1为自己cmd中创建的数据库名

  cursor = db.cursor()

  cursor.execute("drop table if exists fin;") #如果存在fin表时候先删除

  sql = '''create table fin

  (

  id int unsigned not null auto_increment primary key,

  姓名 char(100) not null,

  性别 char(4) not null,

  年龄 tinyint unsigned not null,

  电话 char(13) null default "-"

  );'''

  cursor.execute(sql)

  db.close()

  结果可在cmd命令行数据库中查看,如图:  

甲骨文华育兴业

  3,代码向表中插入内容

  import pymysql

  db = pymysql.connect("localhost", "root", "admin", "test1")#admin为自己数据库密码,test1为自己cmd中创建的数据库名

  cursor = db.cursor()

  # cursor.execute("drop table if exists fin;") #如果存在fin表时候先删除

  # sql = '''create table fin

  # (

  # id int unsigned not null auto_increment primary key,

  # 姓名 char(100) not null,

  # 性别 char(4) not null,

  # 年龄 tinyint unsigned not null,

  # 电话 char(13) null default "-"

  # );'''

  # cursor.execute(sql)

  name = '李白'

  sex = '男'

  age = '20'

  tel = '123456789'

  sql = "insert into fin (姓名,性别,年龄,电话) values ('%s','%s','%s','%s');" % (name, sex, age, tel)

  cursor.execute(sql)

  #为了遵循mysql语法也可以用以下两句字符串拼接

  #sql = 'insert into fin (姓名,性别,年龄,电话) values (\"'+name+'\",\"'+sex+'\",\"'+age+'\",\"'+tel+'\");'

  #cursor.execute(sql)

  db.commit()

  db.close()

  结果如图:  

图片3.png

  四、将爬虫信息保存到mysql数据库

  import requests

  from bs4 import BeautifulSoup

  import pymysql

  list_url = []#存储生成的从第一页到第5页的网页连接

  list_info_experience = []#存储求职要求经验

  list_info_education = []#存储求职要求学历

  list_info_money = []#存储求职要求薪资区间

  list_name = []#存储求职公司名称

  db = pymysql.connect("localhost", "root", "admin", "Myinterview")

  cursor = db.cursor()

  #mysql建表

  def Create_Table(cursor):

  cursor.execute("drop table if exists employee;") # 如果存在fin表时候先删除

  sql = '''create table employee

  (

  id int unsigned not null auto_increment primary key,

  公司名称 char(100) not null,

  工作经验 char(50) not null,

  学历要求 char(50) not null,

  薪资范围 char(50) null default "-"

  );'''

  cursor.execute(sql)

  #插入爬取的信息

  def Mysql_Content(cursor,JobName, JobExperience, JobEducation, JobMoney):

  print(JobName, JobExperience, JobEducation, JobMoney)

  sql = 'INSERT INTO employee(公司名称,工作经验,学历要求,薪资范围) VALUES (\"' + JobName + '\",\"' + JobExperience + '\",\"' + JobEducation + '\",\"' + JobMoney + '\")'

  #print(sql)

  cursor.execute(sql)

  db.commit()

  #网页有很多页,这里把每一页的连接存储在list_url中

  def Make_Url():

  for i in range(1, 4):

  global URL

  URL = 'https://www.jobui.com/jobs?jobKw=python&cityKw=%E5%8C%97%E4%BA%AC&n={}'.format(i)

  list_url.append(URL)

  #print(list_url)

  #获取给定URL页的html信息

  def Get_Wb(URL):

  headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}

  wb_data = requests.get(URL, headers=headers)

  global soup

  soup = BeautifulSoup(wb_data.content, 'lxml')

  #print(soup)

  #获取每家公司的名称

  def Get_Name():

  names = soup.select('#search-match > div.header-2014 > div.astruct.cfix > div.aleft > div.jk-box.jk-matter.j-jobInfo > ul > li > div > div > div.cfix > a')

  for i in names:

  list_name.append(i.get_text().strip())

  #获取每家公司的经验要求,学历要求,薪资区间

  def Get_Msg():

  for i in range(1, 16):

  xxx = 'div.header-2014 > div.astruct.cfix > div.aleft > div.jk-box.jk-matter.j-jobInfo > ul > li:nth-of-type({}) > div > div > div:nth-of-type(4)'.format(i)

  #print(xxx)

  msg = soup.select(xxx)

  #print(msg)

  for y in msg:

  info = y.get_text()

  info = info.split('|')#将经验要求,学历要求,薪资区间3个信息,以|分割开,存储为列表格式

  list_info_experience.append(info[0].strip())

  list_info_education.append(info[1].strip())

  list_info_money.append(info[2].strip())

  #最后以字典形式输出

  def DictOutput():

  for JobName, JobExperience, JobEducation, JobMoney in zip(list_name, list_info_experience, list_info_education, list_info_money):

  AllData = {'公司名称': JobName,

  '工作经验': JobExperience,

  '学历要求': JobEducation,

  '薪资范围': JobMoney

  }

  print(AllData)

  Mysql_Content(cursor, JobName, JobExperience, JobEducation, JobMoney)

  print('北京市招聘信息')

  Make_Url()

  #先输出3页

  for i in range(0, 3):

  Get_Wb(list_url[i])

  #print(list_url[i])#所爬取的网页链接

  Get_Msg()

  Get_Name()

  Create_Table(cursor)

  DictOutput()

  db.close()

  结果如图:  

甲骨文华育兴业

 

人生从业之路的第一步,从甲骨文华育兴业开始,

背后付出的辛苦与努力只有自己知道,而这也只是职业生涯的开始。

勤恳努力的人终会得到最好的回报,有些努力需要时间来回答

你吃的苦终会铺成你想要的路!

甲骨文华育兴业,为你的IT之路开启梦想之门!


【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息联系我们,我们将及时沟通与处理。本站内容除非来源注明甲骨文华育兴业,否则均为网友转载,涉及言论、版权与本站无关

相关推荐

java开发培训

浅谈MVC模式与SSH框架

说道JAVA开发就不得不说下MVC开发模式和SSH框架了,那么MVC和SSH框架都代表了什么呢?看看下面的文章就知道了!

大数据开发

MapReduce 数据倾斜原因和解决方案(二)

上篇文章给大家介绍了MapReduce数据倾斜的一些解决方案,这篇文章是另一种解决方式,从事大数据开发和大数据学习的同学们我们一起来学习吧!​

java开发培训

负载均衡概述

负载均衡(Load Balance),是分布式系统中一个非常重要的概念。当访问的服务具有多个实例节点时,需要根据某种“均衡”的策略决定请求发往哪个节点,这个过程就是所谓的负载均衡。

大数据开发

MapReduce 数据倾斜原因和解决方案(一)

MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义: 1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。 2)MapReduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。 3)MapReduce是一个并行程序设计模型与方法(Programming Model & Methodology)。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理。

【AI大数据】2019年AI数据5大趋势 ps使用 大数据 冲刺Java架构师年薪50W

友情链接: 甲骨文华育兴业济南校区 甲骨文华育兴业北京校区 甲骨文华育兴业哈尔滨校区 甲骨文华育兴业长春校区 魔据教育

Copyright ©2016-2019. All Rights Reserved. 京ICP备17018991号-4

网站地图