python操作linux,利用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

c0029218ea54

image.png

def foo():

pass

def func():

print('pass')

def main():

foo()

func()

print(__name__)

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

c0029218ea54

image.png

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

c0029218ea54

c0029218ea54

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

c0029218ea54

c0029218ea54

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值