一、数据库

关系型数据库(RDBMS):

1.数据以表格的形式出现
2.每行为各种记录名称
3.每列为记录名称所对应的数据域
4.许多的行和列组成一张表单
5.若干的表单组成database

1.MySQL基本管理命令

第一次设置密码: mysqladmin -u root password "new_password";

登录:mysql -u root -p 密码

启动:/etc/init.d/mysqld start  或/路径/bin/mysqld_safe &

添加用户:

mysql> INSERT INTO user
          (host, userpassword,
           select_priv, insert_priv, update_priv)
           VALUES ('localhost''guest',
           PASSWORD('guest123'), 'Y''Y''Y');
或者
>grant all on *.* to root@192.168.1.1 identified by "123";
>show databases; 列出mysql数据库
>show tables;列出该库下所有的表
>create database testdb charset "utf8"; #创建一个叫testdb的数据库,且让其支持中文
>drop database tesdb; 删除数据库
 

2.数据库类型

数值类型:

类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1 字节 (-128,127) (0,255) 小整数值
SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
FLOAT 4 字节 (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度
浮点数值
DOUBLE 8 字节 (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度
浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值
 

日期和时间类型

类型 大小
(字节)
范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

 字符串类型:

类型 大小 用途
CHAR 0-255字节 定长字符串
VARCHAR 0-65535 字节 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65 535字节 二进制形式的长文本数据
TEXT 0-65 535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据

3.常用命令

>show crteate table student; 查看建表语句

>

create table student(
stu_id INT NOT NULL AUTO_INCREMENT,
name CHAR(32) NOT NULL,
age INT NOT NULL,
register_date DATE,
PRIMARY KEY ( stu_id )
); 新建表

> insert into student (name,age,register_date) values("刘",21,"2016-08-28"); 插入数据

> select * from student;  查询数据

>select name='刘' from student;

>select * from student where name like 'wang%';

>select * from student where age>30;

>update student set name='张',age=81 where stu_id=2;  把stu_id=2的name,age更新

>delete from student where name='刘';

>select * from student where binary name="JACK"; 区分大小写

>select * from student order by age;按照age从小到大排序

>select AVG(age) from student; 计算平均age

> select register_date,COUNT(register_date) from student;

>alter table student add score int not null;  增加一列score

>alter table student drop score;删除一列

>alter table student change stu_id id int(8); 改字段的名字及数据类型

>alter table student modify name char(16); ; 改字段的数据类型

>select * from A inner join B on A.a=B.b; 查询A和B两个表中,a和b列数值相等的数据

> select * from A right join B on A.a=B.b,结果:

+------+---+
| a | b |
+------+---+
| 3 | 3 |
| 4 | 4 |
| NULL | 5 |
| NULL | 6 |
+------+---+
4 rows in set (0.00 sec)

> select * from A left join B on A.a = B.b UNION select * from A right join B on A.a = B.b;
+------+------+
| a | b |
+------+------+
| 3 | 3 |
| 4 | 4 |
| 1 | NULL |
| 2 | NULL |
| NULL | 5 |
| NULL | 6 |
+------+------+
6 rows in set (0.00 sec)

>create index id on student;创建索引

>DROP INDEX [indexName] ON mytable; 删除索引

>show index from student;

4.事务

事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)

mysql> begin; #开始一个事务
 
mysql> insert into a (a) values(555);
 
mysql>rollback; 回滚 , 这样数据是不会写入的

当然如果上面的数据没问题,就输入commit提交命令就行;

5.python连接MySQL

5.1下载安装

python pip.exe  install pymysql

5.2执行SQL

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Liumj
import pymysql # 创建连接
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='liumengjie')
# 创建游标
cursor = conn.cursor()
# 执行SQL,并返回收影响行数
#effect_row = cursor.execute("update hosts set host = '1.1.1.2'")
effect_row = cursor.execute("select name,age from liumengjie.student")
# 执行SQL,并返回受影响行数
# effect_row = cursor.execute("update hosts set host = '1.1.1.2' where nid > %s", (1,))
# 执行SQL,并返回受影响行数
# effect_row = cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])
# 提交,不然无法保存新建或者修改的数据
conn.commit()
# 关闭游标
cursor.close()
# 关闭连接
conn.close()

5.3获取数据

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Liumj
import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='liumengjie')
cursor = conn.cursor()
cursor.execute("select * from liumengjie.student")
row_1 = cursor.fetchone() # 获取第一行数据
# row_2 = cursor.fetchmany(3) # 获取前n行数据
# row_3 = cursor.fetchall() # 获取所有数据
conn.commit()
cursor.close()
conn.close()

二、redis

缓存数据库:NoSQL,意为不仅仅是SQL,四大分类:

键值(key-value)存储数据库

列存储数据库

文档型数据库

图形数据库

1.redis介绍:

redis是业界主流的key-value nosql 数据库之一。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis优点

  • 异常快速 : Redis是非常快的,每秒可以执行大约110000设置操作,81000个/每秒的读取操作。

  • 支持丰富的数据类型 : Redis支持最大多数开发人员已经知道如列表,集合,可排序集合,哈希等数据类型。

    这使得在应用中很容易解决的各种问题,因为我们知道哪些问题处理使用哪种数据类型更好解决。
  • 操作都是原子的 : 所有 Redis 的操作都是原子,从而确保当两个客户同时访问 Redis 服务器得到的是更新后的值(最新值)。

  • MultiUtility工具:Redis是一个多功能实用工具,可以在很多如:缓存,消息传递队列中使用(Redis原生支持发布/订阅),在应用程序中,如:Web应用程序会话,网站页面点击数等任何短暂的数据;

2.redis基本操作

set(name,value,ex=None,px=None,nx=False,xx=false)

在Redis中设置值,默认,不存在则创建,存在则修改

参数:
     ex,过期时间(秒)
     px,过期时间(毫秒)
     nx,如果设置为True,则只有name不存在时,当前set操作才执行
     xx,如果设置为True,则只有name存在时,岗前set操作才执行

setnx(name,value) 只有name不存在时,执行添加操作。

psetex(name,time_ms,value)设置值,time_ms设置过期时间

mset(*args,**kwargs)批量设置

get(name) 获取值

mget(keys,*args) 批量获取

getbit(name,offset)获取name对应的值得二进制表示中的某位的值

bitcount(key, start=None, end=None) 获取name对应的值的二进制表示中 1 的个数

Python连接msyql、redis学习_Day12的更多相关文章

  1. 【Azure Redis 缓存】 Python连接Azure Redis, 使用redis.ConnectionPool 出现 "ConnectionResetError: [Errno 104] Connection reset by peer"

    问题描述 Python连接Azure Redis, 使用redis.ConnectionPool 出现 "ConnectionResetError: [Errno 104] Connecti ...

  2. python连接MySQL/redis/mongoDB数据库的简单整理

    python连接mysql 用python操作mysql,你必须知道pymysql 代码示意: import pymysql conn = pymysql.connect(host='127.0.0. ...

  3. Python中的redis学习笔记

    redis是一个key-value结构的数据库,value的格式可以使string,set,list,map(即python里面的dict),sorted set(有序集合) 1.初始化 1)直接连接 ...

  4. python连接mysql,redis类方法

    #coding:utf8 import pymysql import redis import conf '''MYSQL DB Object''' class Mysql(): def __init ...

  5. Redis学习---Redis操作之Python连接

    PyCharm下的Redis连接 连接方式: 1. 操作模式 redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使 ...

  6. redis学习 (key)键,Python操作redis 键 (二)

    # -*- coding: utf-8 -*- import redis #这个redis 连接不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. delete ...

  7. Python操作redis学习系列之(集合)set,redis set详解 (六)

    # -*- coding: utf-8 -*- import redis r = redis.Redis(host=") 1. Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合 ...

  8. python3.4学习笔记(二十五) Python 调用mysql redis实例代码

    python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...

  9. python连接redis,redis集群

    python连接redis: import redis r = redis.Redis(host='192.168.50.181',port=6002) r.set('user_phone_14900 ...

随机推荐

  1. Nutch搜索引擎Solr简介及安装

    Nutch搜索引擎(第2期)_ Solr简介及安装   1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的 ...

  2. 验证API

    验证API 本篇定位在数据入口的验证 普通的DataAnnotation验证 基于场景的DataAnnotation验证 可修改的外置式DataAnnotation验证 SUMMARY 最终调用时的用 ...

  3. Linq无聊练习系列8---开放式并发事务,null和 DateTime,string操作练习

    /*********************开放式并发事务,null和 DateTime,string操作练习**********************************/ //所谓并发,就是 ...

  4. 浅谈DevExpress<一>:换肤

    最近要用到devExpress,一句话,很好很强大,比起vs自带的winform界面,种类和花样要多了不少,然而,强力的功能带来了庞大的信息量,所以我打算通过一些小模块来和大家一起对它进行探讨和研究. ...

  5. windows 常用操作

      资源管理器 资源管理器中进入上一级目录:Alt+向上箭头     常用命令行命令 打开windows服务:services.msc     以管理员身份运行程序 按下Win键,在打开的窗口中输入命 ...

  6. PHP gbk转换成utf8

    /** * GBK ASCII 转换成utf8 */ public function to_utf8($str){ $detect = array('ASCII', 'GBK', 'UTF-8'); ...

  7. 对 Linux 新手有用的 20 个命令

    你打算从Windows换到Linux上来,还是你刚好换到Linux上来?哎哟!!!我说什么呢,是什么原因你就出现在我的世界里了.从我以往的经验来说,当我刚使用Linux,命令,终端啊什么的,吓了我一跳 ...

  8. 译文:User-agent的历史

      这是一篇译文,译文出处在文章底部贴出.由于技术水平,英语水平,翻译水平有限,请各路大侠多多指正,谢谢,提高你也提高我:)   几个礼拜之前,我谈论了特征检测和浏览器检测.这篇帖子提到了一点点嗅探U ...

  9. 模块化与MVC

    [javascript激增的思考02]模块化与MVC 前言 之前我们遇到了这么一个项目,也就是我们昨天提到的,有很多的小窗口的,昨天说的太抽象了,今天我们再来理一理什么是小窗口(后面点说下),当时由于 ...

  10. linux php 安装GD库

    linux下为php添加GD库的步骤如下: 一.下载 gd-2.0.33.tar.gz http://www.boutell.com/gd/ jpegsrc.v6b.tar.gz http://www ...