利用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)

你可能感兴趣的:(利用python操作linux)