赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
例如:学习locust时,需要读取数据库的用户信息,涉及多个环境,手动一个环境一个环境数据库查询后复制到文件里太麻烦。
首先,你需要确定你要连接的数据库类型,并安装相应的数据库驱动程序。常见的数据库驱动程序包括psycopg2(PostgreSQL),mysql-connector-python(MySQL),pyodbc(Microsoft SQL Server),cx_Oracle(Oracle)等。你可以使用Python的包管理器(如pip)来安装这些驱动程序。
pip install psycopg2
代码如下(示例):
import psycopg2 # 导入psycopg2驱动程序
使用数据库驱动程序提供的函数来建立与数据库的连接。你需要提供数据库的连接参数,例如主机名、端口号、用户名、密码等。
具体的连接参数取决于你要连接的数据库类型
这里我读取的是单独建的一个字典文件config中的配置
连接pg数据库,执行查询代码如下:
def pg_sql(sql):
result = []
conn = None
cur = None
try:
# 连接到数据库
conn = psycopg2.connect(
host=config.DB["host"],
port=config.DB["port"],
database=config.DB["database"],
user=config.DB["user"],
password=config.DB["password"]
)
执行SQL查询:一旦连接成功,你可以使用conn对象来执行SQL查询并获取结果。
cur = conn.cursor() # 创建游标
cur.execute(sql) # 执行语句
rows = cur.fetchall() # 处理查询结果
for row in rows:
result.append(row[0]) # 这里的[0]表示只保存了查询出来的第一列数据
except psycopg2.Error as err:
print('Error msg: ' + str(err))
# finally 是一个在 try-except 语句块中的可选部分用于定义无论是否发生异常都会被执行的代码块
finally:
if cur is not None:
cur.close() # 关闭游标
if conn is not None:
conn.close() # 关闭数据库连接
return result
results的值为sql的查询结果
name的值为config.HT[“name”]
file 是一个内置变量,表示当前文件的路径。os.path.dirname(file) 可以获取当前文件所在的目录路径,而 os.path.abspath() 则将相对路径转换为绝对路径。
os.path.split() 函数将路径分割为目录和文件名,返回一个元组。通过取元组中的第一个元素,即可获取当前文件所在目录的父级目录路径。
curPath = os.path.abspath(os.path.dirname(__file__)) # 此处用绝对路径
rootPath = os.path.split(curPath)[0]
rootPath为项目根目录
文件保存到项目根目录下的docs文件夹下,名称为***_station.txt
def get_result(results, name):
filename = f"{rootPath}/docs/{name}_station.txt"
with open(filename, 'w') as file:
for result in results:
file.write(str(result) + '\n')
return results
import openpyxl def get_result(results, name): filename = f"{rootPath}/docs/{name}_station.xlsx" # 创建一个新的工作簿 workbook = openpyxl.Workbook() sheet = workbook.active # 将结果写入工作表 for row, result in enumerate(results, start=1): sheet.cell(row=row, column=1, value=result) # 保存工作簿为 XLSX 文件 workbook.save(filename) return results
from docx import Document def get_result(results, name): filename = f"{rootPath}/docs/{name}_station.docx" # 创建一个新的 Word 文档 document = Document() # 将结果写入文档 for result in results: document.add_paragraph(str(result)) # 保存文档为 Word 文件 document.save(filename) return results
修修改改了一下午,之前改配置需要改两三行,现在单独拎出来,改配置就只要改一行了,要加啥配置信息,在yaml文件里面加就可以了,说起来yaml还真好用的。
conn和cur可能会在赋值前引用,所以提前建立一个None。
之前一直有各种奇怪的报错(报找不到文件路径,No module named ‘base’),网上也没找到原因,试了半天发现是引用字典的方式有问题,换了个方式就可以了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。