利用python操作linux

用pymysql 操作mysql数据库

import pymysql

conn = pymysql.connect(host='10.3.134.xxx',     #数据库的ip
                       port=3306,                       #数据库端口号
                       user='root',                      #数据库授权用户名
                       passwd='ASDASD123!', #数据库授权用户密码
                       db='name_db',                #配置的库名
                       charset='utf8mb4')        #配置登录用户

#获取游标对象
cursor = conn.cursor()

# ---  增删改查的sql语句
   注!!后面有语句
#---sursor 执行sql语句

#提交更改(在增加和删除修改时需要提交) 查询不需要
conn.commit()

cursor.close()

# 关闭连接对象
conn.close()



注
1)在shark_db下创建表

create_table_sql = """create table t3
(id int auto_increment primary key, 
 name varchar(10) not null, 
 age int not null)"""   #sql语句

cursor.execute(create_table_sql) #执行该语句

2)在shark_db下删除表

drop_table_sql = """drop table t1"""  #sql语句

cursor.execute(drop_table_sql)  #执行该语句

3)插入数据
插入多条:

insert_data_sql = "insert into t3(name, age) values(%s, %s);" #sql语句
row = cursor.executemany(       #executemany多条语句用这个
          insert_data_sql, 
          [('shark1', 18),('xiguatian', 20),('qf', 8)]
          )     #执行+插入数据

插入单条:

insert_data_sql = "insert into t1(name, age) values(%s, %s);" #sql语句

row = cursor.execute(insert_data_sql, ('shark', 18)) # 执行+插入

查询语句

request_sql = "select id,name,age from t2 where name=%s;"

row_nums = cursor.execute(request_sql, ('shark'))  #查看总共几行数据
print("总共有",row_nums,"行数据")

输出结果:总共有 1 行数据
"""
获取到数据结果集具有迭代器的特性:
1. 可以通过索引取值,可以切片
2. 结果集中的数据每次取出一条就少一条
"""
获取数据中的第一条
one_data = cursor.fetchone()

获取数据中的指定数量的条目    
many_data = cursor.fetchmany(2)
从第2条数据开始第2条第三条数据

获取数据中剩余的全部数据
all_data = cursor.fetchall()
例如
cursor = conn.cursor()
request_sql = "select id,name,age from t2 where name=%s;"

row_nums = cursor.execute(request_sql, ('shark'))#查看总共几行数据
print("总共有",row_nums,"行数据")
result = cursor.fetchone()
print(result)
cursor.close()

# 关闭连接对象
conn.close()
+
输出结果
PS D:\Python Code> python -u "d:\Python Code\mysql查询.py"
总共有 1 行数据
(1, 'shark', 18)

b. 获取到的数据是字典类型的

游标设置为字典类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

query_sql = "select id,name,age from t1 where name=%s;"

row_nums = cursor.execute(query_sql, ('shark2'))

获取结果的操作和之前的一样
result = cursor.fetchone()
conn.commit()
cursor.close()
conn.close()

print(result)
例如:
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
request_sql = "select id,name,age from t2 where name=%s;"

row_nums = cursor.execute(request_sql, ('shark'))#查看总共几行数据
print("总共有",row_nums,"行数据")
result = cursor.fetchone()
print(result)
cursor.close()

# 关闭连接对象
conn.close()

输出结果PS D:\Python Code> python -u "d:\Python Code\mysql查询.py"
总共有 1 行数据
{'id': 1, 'name': 'shark', 'age': 18}

函数的名称空间

全局变量(顶满格写)
n = 10

def foo():    
    局部变量
    n = 100
   print(globals()) 查看全局变量
   print(locals())  查看局部变量
foo()

print(n)  #局部变量出了函数之后就消失于内存中,不存在了

print(a) #直接报错 因为全局没有定义

print(id) id属于python内置变量类似于系统环境变量

变量的查找过程,如果局部使用变量名时
局部--->全局--->内置
全局使用变量名
全局--->内置

模块的内置变量__name__

每个 .py 文件都有一个变量名__name__, 这个变量名的值会根据这个文件的用途不同而随之变化。

当文件作为模块被其他文件使用时,__name__的值是这个文件的模块名

当文件作为脚本(就是作为可执行文件)使用时,__name__的值是字符串类型的 '__main__'

通常你会看到一些 Python 脚本中会有类似下面的代码:

some_script.py

image.png

def foo():
    pass

def func():
    print('pass')

def main():
    foo()
    func()

print(__name__)

当他作为脚本被执行时 print(__name__) = __main__

image.png

当他作为模块被执行时print(__name__) = 模块名称

image.png

导入模块

"""
bin 可执行文件 二进制文件
lib 库文件 函数库
conf 控制文件
"""
#---------------------------------------------
#               一
import some_mod  
# 导入刚刚所编写的模块 some_mod.py 必须处于同一目录下
from mode import some_mod
# 导入some_mod 该模块文件再mode目录下

print(n)
print(foo())  # 这个时候这两个显示未定义

print(some_mod.n)
print(some_mod.foo())
#成功引入some_mod模块中的值或者变量函数等


#-----------------------------------------------
#                二

import sys
print(sys.path)#打印出默认的读取路径
sys.path.insert(0,'d:\\Python Code\\python05') 
#↑这是给path添加一个读取的路径
print(sys.path)
from mode import some_mod

print(some_mod.n)
print(some_mod.foo())
#-----------------------------------------------
#                 三

import sys, os
#···导入这两个默认模块是为了获取执行文件的绝对路径
way = os.path.abspath(__file__) #··· __file__为函数默认为本文件名
#print(sys.path)#···当前文件可读取模块的路径
#···d:\Python Code\python05\bin\导入模块.py
#···我们需要获取程序的总目录 例如当前的python05
print (way) #当前路径
#···我们可以切割最后两个路径获取到python05 然后导入path即可
#···dirname可以获得除本级目录的绝对路径
print(os.path.dirname(way))
#···我们切割两次即可
BASE_DIR = os.path.dirname(os.path.dirname(way))
print (BASE_DIR)
#三次print的结果
#   d:\Python Code\python05\bin\导入模块.py
#   d:\Python Code\python05\bin
#   d:\Python Code\python05
#···最后一次我们将他导入path
sys.path.insert(0,BASE_DIR)
print(sys.path)

利用python远程操作redis

安装软件包

yum install  epel-release   # 保证安装 epel 源
yum install redis

操作方式
redis-server                # Redis 服务器
redis-cli                   # Redis 自带的客户端
redis-benchmark             # Redis 性能测试工具
redis-check-aof             # AOF 文件修复工具


systemctl restart redis #启动redis服务

set 增加
set key value
get 查询
get key
ttl 查询过期时间
-1永不过期
-2已经过期
n 还有多少秒过期

配置文件
# 设置监听地址
bind 127.0.0.1

# 设置监听端口
port 6379

python操作redis



image.png
import redis

r = redis.Redis(host='10.3.134.226',port=6379)
 #redis 0-15总共16个数据库 默认都是0

#r.set("name","t2sh") #指定key-value
val = r.get("name")
print(val)     #输出的原始值是byte类型的
val_fi= str(val,encoding='utf-8')  #转化他的类型为字符串
print(val_fi)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容