一、数据库

关系型数据库(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

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

5.3获取数据

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. # Author:Liumj
  4. import pymysql
  5. conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='liumengjie')
  6. cursor = conn.cursor()
  7. cursor.execute("select * from liumengjie.student")
  8. row_1 = cursor.fetchone() # 获取第一行数据
  9. # row_2 = cursor.fetchmany(3) # 获取前n行数据
  10. # row_3 = cursor.fetchall() # 获取所有数据
  11. conn.commit()
  12. cursor.close()
  13. 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. linux find命令之exec

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec  参数后面跟的是command ...

  2. 2014.3.4-C语言学习小结

    位操作: 知识点: 1.位运算符 2.位移运算符 1.将指定位设置为12.将指定位设置为03.获取指定位的内容 ==========================复习二进制 1.二进制转换 10-- ...

  3. Django数据库迁移

    如果你用过Django的数据库就会发现一个比较令人纠结的地方:数据库更改. 我们知道添加或者删除一个models.Model 需要在数据库里相应的操作,这需要我们进入数据库命令行手动添加或删除,因为s ...

  4. Redis集群方案

    Redis集群方案 前段时间搞了搞Redis集群,想用做推荐系统的线上存储,说来挺有趣,这边基础架构不太完善,因此需要我们做推荐系统的自己来搭这个存储环境,就自己折腾了折腾.公司所给机器的单机性能其实 ...

  5. cookie和session详解[转]

    文章链接: http://aijezdm915.iteye.com/blog/1272530 cookie.session 都是用来保存用户状态信息的一种方法或手段 二者主要区别是:         ...

  6. 业务类接口在TCP,HTTP,BLL模式下的实例 设计模式混搭 附源码一份

    业务类接口在TCP,HTTP,BLL模式下的实例 设计模式混搭 附源码一份 WinForm酒店管理软件--框架这篇随笔可以说是我写的最被大家争议的随笔,一度是支持和反对是一样的多.大家对我做的这个行业 ...

  7. SQL Server中日志

    再谈SQL Server中日志的的作用 简介 之前我已经写了一个关于SQL Server日志的简单系列文章.本篇文章会进一步挖掘日志背后的一些概念,原理以及作用.如果您没有看过我之前的文章,请参阅: ...

  8. 系统架构、网络通信、IM、视频会议技术

    专注于系统架构.网络通信.IM.视频会议技术. 主要作品: ESFramework 强悍的通信框架.P2P框架.群集平台. OMCS 简单易用的 网络语音视频 框架. MFile 语音视频录制组件. ...

  9. 自动生成Code First代码

    自动生成Code First代码 在前面的文章中我们提到Entity Framework的“Code First”模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Fram ...

  10. SQL Server中的高可用性1

    SQL Server中的高可用性(1)----高可用性概览   自从SQL Server 2005以来,微软已经提供了多种高可用性技术来减少宕机时间和增加对业务数据的保护,而随着SQL Server ...