用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
def foo():
pass
def func():
print('pass')
def main():
foo()
func()
print(__name__)
当他作为脚本被执行时 print(__name__)
= __main__
当他作为模块被执行时
print(__name__)
= 模块名称
导入模块
"""
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
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)