python学习道路(day12note)(mysql操作,python链接mysql,redis)
1,针对mysql操作
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 设置密码 update user set password=passworD("test") where user='root';修改密码 flush privileges; grant all on *.* to root@'%' identified by 'your_password'; mysql> select user,password,host from mysql.user; +------+-------------------------------------------+-----------+ | user | password | host | +------+-------------------------------------------+-----------+ | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | localhost | | root | | 127.0.0.1 | | root | | ::1 | | | | localhost | | repl | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 10.0.5.44 | | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 10.0.5.44 | +------+-------------------------------------------+-----------+ 当设定密码后,如果要想更改密码如何操作呢? mysqladmin -u root -p password " Enter password: 输入原来root的密码就可以更改密码了。 【连接数据库】 刚刚讲过通过使用mysql -u root -p 就可以连接数据库了,但这只是连接的本地的数据库’localhost’,然后有很多时候都是去连接网络中的某一个主机上的mysql。 mysql -u user1 -p –P 3306 -h 10.0.2.69 其中-P(大写)指定远程主机mysql的绑定端口,默认都是3306;-h指定远程主机的IP 3. 查看某个表的字段 mysql> desc func; //func 是表名 +-------+------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------------------+------+-----+---------+-------+ | name | char(64) | NO | PRI | | | | ret | tinyint(1) | NO | | 0 | | | dl | char(128) | NO | | | | | type | enum('function','aggregate') | NO | | NULL | | +-------+------------------------------+------+-----+---------+-------+ 4. 查看某个表的表结构(创建表时的详细结构) mysql> show create table func; |Table | CreateTable | | func | CREATE TABLE `func` ( `name` char(64) collate utf8_bin NOT NULL default '', `ret` tinyint(1) NOT NULL default ', `dl` char(128) collate utf8_bin NOT NULL default '', `type` enum('function','aggregate') character set utf8 NOT NULL, PRIMARY KEY (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='User defined functions' | +-------+---------------------------------------------------------------------------------------------------------------------- 5. 查看当前是哪个用户 mysql> select user(); +----------------+ | user() | +----------------+ | root@localhost | +----------------+ 6. 查看当前所在数据库 mysql> select database(); +------------+ | database() | +------------+ | mysql | +------------+ 7. 创建一个新库 mysql> create database db1; Query OK, 1 row affected (0.04 sec) 8. 创建一个表 mysql> create table t1 ( `id` int(4), `name` char(40)); Query OK, 0 rows affected (0.02 sec) mysql> desc t1; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | id | int(4) | YES | | NULL | | | name | char(40) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 9. 查看当前数据库版本 mysql> select version(); +-----------+ | version() | +-----------+ | 5.0.86 | +-----------+ 10. 查看当前系统时间 mysql> select current_date, current_time; +--------------+--------------+ | current_date | current_time | +--------------+--------------+ | 2011-05-31 | 08:52:50 | +--------------+--------------+ 11. 查看当前mysql的状态 mysql> show status; +-----------------------------------+----------+ | Variable_name | Value | +-----------------------------------+----------+ | Aborted_clients | 0 | | Aborted_connects | 1 | | Binlog_cache_disk_use | 0 | | Binlog_cache_use | 0 | | Bytes_received | 664 | | Bytes_sent | 6703 | 这个命令打出很多东西,显示你的mysql状态。 12. 查看mysql的参数 mysql> show variables; 很多参数都是可以在/etc/my.cnf中定义的。 13. 创建一个普通用户并授权 mysql> grant all on *.* to user1 identified by '; Query OK, 0 rows affected (0.01 sec) all 表示所有的权限(读、写、查询、删除等等操作),*.*前面的*表示所有的数据库,后面的*表示所有的表,identified by 后面跟密码,用单引号括起来。这里的user1指的是localhost上的user1,如果是给网络上的其他机器上的某个用户授权则这样: mysql> grant all on db1.* to '; Query OK, 0 rows affected (0.00 sec) 用户和主机的IP之间有一个@,另外主机IP那里可以用%替代,表示所有主机。例如: mysql> grant all on db1.* to '; Query OK, 0 rows affected (0.00 sec) 【一些常用的sql】 1. 查询语句 mysql> select count(*) from mysql.user; mysql.user表示mysql库的user表;count(*)表示表中共有多少行。 mysql> select * from mysql.db; 查询mysql库的db表中的所有数据 mysql> select db from mysql.db; 查询mysql库db表的db段。 mysql> select * from mysql.db where host like '10.0.%'; 查询mysql库db表host字段like 10.0.% 的行,这里的%表示匹配所有,类似于前面介绍的通配符。 2. 插入一行 mysql> insert into db1.t1 values (1, 'abc'); Query OK, 1 row affected (0.00 sec) t1表在前面已经创建过。 mysql> select * from db1.t1; +------+------+ | id | name | +------+------+ | 1 | abc | +------+------+ 3. 更改某一行 mysql> update db1.t1 set name='aaa' where id=1; Query OK, 1 row affected (0.02 sec) Rows matched: 1 Changed: 1 Warnings: 0 这样就把原来id为1的那行中的name改成’aaa’ 4. 删除表 mysql> drop table db1.t1; Query OK, 0 rows affected (0.01 sec) 5. 删除数据库 mysql> drop database db1; Query OK, 0 rows affected (0.07 sec) 6. 备份与恢复库 mysqldump -uroot -p mysql >mysql.sql 这里的mysqldump 就是备份的工具了,-p后面的mysql指的是mysql库,把备份的文件重定向到mysql.sql。如果恢复的话,只要: mysql -uroot -p mysql < mysql.sql
2.python链接数据库并执行备份
import pymysql import os, sys, tarfile, datetime, re, time, subprocess Date = time.strftime('%Y%m%d_%H-%M') print(Date) flage = None Flage = None class mysql_backup(object): def __init__(self,res,host,user,pwd,gamedb,path): self.res = res self.host = host self.user = user self.pwd = pwd self.gamedb = gamedb self.path = path def connect(self): f = open(self.path + "errlog_db.log","a+",encoding="utf-8") try: conn = pymysql.connect(host=self.host, user=self.user, passwd=self.pwd, db=self.gamedb) print("connect ok") global flage flage = True except Exception as e: f.write(Date + ':' + 'connect to mysqldb error!!!' + '\n') sys.exit() conn.close() f.close() def sqlfile(self): global flage, Flage if flage: f = open(self.path + "errlog_db.log", "a+", encoding="utf-8") try: os.system('%s -u%s -p%s -h%s %s >> %sgamedb.sql' % (self.res,self.user,self.pwd,self.host,self.gamedb,self.path)) tarsql = tarfile.open( self.path + Date + '.tar', 'w') tarsql.add(self.path + 'gamedb.sql',arcname= Date + ".gamedb.sql") tarsql.close() Flage = True print("sqlfile ok %s" % self.user) except Exception as e: f.write(Date + ':' + 'sqlfile to tar error!!!' + '\n') sys.exit() f.close() def refile(self): global flage, Flage if flage and Flage: if os.path.isfile(self.path + 'gamedb.sql'): os.system("rm -f" + " " + self.path + "gamedb.sql") print("refiel ok") def errlog(self): if os.path.isdir(self.path) is False: os.makedirs(self.path) print("path ok") if os.path.isfile(self.path + 'errlog_db.log') is False: os.system("touch" + " " + self.path + "errlog_db.log") print("errlog ok") def oldfile(self): settime= (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y%m%d') #获取到30天前的时间 settime = int(settime) for dirpath,dirnames,filenames in os.walk(self.path): for file in filenames: if file != 'errlog_db.log': filetime = time.strftime('%Y%m%d', time.localtime(os.stat(self.path + file).st_ctime)) #获取文件时间 filetime = int(filetime) print(file) if settime == filetime: os.remove(self.path + file) #需要你手动更改打开的文件位置,注意#行需要更改 def config(): file = open("start", "r", encoding="utf-8") #打开文件位置 host = re.findall(r'-db_host="(\w.*?)"', file.read()) str_host = ''.join(host) file.close() file = open("start","r",encoding="utf-8") dbname = re.findall(r'-db_name="(\w.*?)"',file.read()) #打开文件位置 str_dbname = ''.join(dbname) file.close() res = subprocess.Popen("which mysqldump", shell=True, stdout=subprocess.PIPE) res = res.stdout.read().decode().strip() parameter = mysql_backup(res,str_host,',str_dbname,r'/data/backup_db/') #用户,密码需要更改,路径 parameter.errlog() parameter.connect() parameter.sqlfile() parameter.refile() parameter.oldfile() if __name__ == "__main__": config()
3.redis操作。。。。
python学习道路(day12note)(mysql操作,python链接mysql,redis)的更多相关文章
- Python学习入门基础教程(learning Python)--5.6 Python读文件操作高级
前文5.2节和5.4节分别就Python下读文件操作做了基础性讲述和提升性介绍,但是仍有些问题,比如在5.4节里涉及到一个多次读文件的问题,实际上我们还没有完全阐述完毕,下面这个图片的问题在哪呢? 问 ...
- Python学习课程零基础学Python
python学习课程,零基础Python初学者应该怎么去学习Python语言编程?python学习路线这里了解一下吧.想python学习课程?学习路线网免费下载海量python教程,上班族也能在家自学 ...
- Python学习系列(四)Python 入门语法规则2
Python学习系列(四)Python 入门语法规则2 2017-4-3 09:18:04 编码和解码 Unicode.gbk,utf8之间的关系 2.对于py2.7, 如果utf8>gbk, ...
- 【Python学习之十】操作数据库
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 操作mysql数据库 1.安装pymysql模块p ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- Python学习杂记_3_字符串操作的常用方法
字符串操作 字符串是可以通过下标来进行取值的,但是由于字符串是不可变变量,不能通过下标来修改它的值(形式如 字符串[下标]),下标从0开始,最大下标值是字符串长度减1,即len(string)-1 P ...
- 【Python学习之六】文件操作
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 一.文件的打开与关闭 使用open函数,可以打开一 ...
- python学习1-博客-DB操作类
#学习python,准备写一个博客,第一天:在别人代码基础上写一个数据库操作的db.py1)python代码 #!/usr/bin/env python # -*- coding: UTF-8 -*- ...
- 【Python学习笔记】字符串操作
字符串的表示 python中的字符串是一个常量,可以使用单引号'',双引号""或三引号""" """来创建一个字符串常量 ...
随机推荐
- 一次dell R420 电源故障引发的“血案”
说“血案”有写夸张了,其实是也就熬了一夜的通宵,做运维的伤不起啊,作为一名运维工程师,像这种服务器突发故障半夜起床的情况属于家常便饭,见怪不怪了,开始说正事: 前几天半夜12点左右,收到服务器宕机的消 ...
- W7无法更新
从提示中可以推断可能服务中没有启动更新服务,当即开始>>>运行>>>services.msc 打开服务管理,找到Windows Update服务,启动它.重新更新服 ...
- linux下nat配置
iptables要启用nat表,必须启动nat表的支持.默认情况下,linux下是没有开启nat表的支持的. #启动内核的路由功能 echo > /proc/sys/net/ipv4/ip_fo ...
- loadrunner11录制无法打开IE浏览器
安装loadrunner折腾了很久,后来发现是ghost系统问题.重装了系统,再重装了自己需要用的工具~ 接着学习loadrunner,一边看帮助文档一遍学.可是为嘛按照帮助文档的步骤来,就是会碰到一 ...
- day3
程序1: 实现简单的shell sed替换功能 ]new = sys.argv[]file_name = sys.argv[]tmp_file ="tmpfile"open(tmp ...
- __cdecl 、__fastcall、__stdcall
调用约定: __cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数 ...
- SQLite -- 分页查询
原文:http://blog.csdn.net/lu1024188315/article/details/51734514 参考:http://www.runoob.com/sqlite/sqlite ...
- HTML5本地存储——Web SQL Database
在HTML5 WebStorage介绍了html5本地存储的Local Storage和Session Storage,这两个是以键值对存储的解决方案,存储少量数据结构很有用,但是对于大量结构化数据就 ...
- 搭建eclipse+github开发环境
开发环境 1.jdk:jdk1.8.0_60 2.eclipse:eclipse-jee-mars-R-win32-x86_64.zip 配置步骤 1.配置本地git目录(可选) eclipse-je ...
- CentOS 安装 Zend Guard Loader
说明:PHP5.3以上的版本不再支持Zend Optimizer,已经被全新的 Zend Guard Loader 取代,下面是安装Zend Guard具体步骤,以下操作均在终端命令行执行 在 Zen ...