我正在尝试进行数据库测试,其中我对数据库运行事务集,同时向数据库打开X个空闲连接。话虽这么说,我已经开始创建一些逻辑来打开与数据库的连接:
import socket
def open_connect(hostname, port):
"""Function that creates a socket connection
:hostname: Hostname to connect to.
:port: Port to connect to host on.
"""
ipaddr = socket.gethostbyname(hostname)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ipaddr, port))
sock.close()
def main():
"""Main function."""
open_connect('somedb', 3306)
if __name__ == "__main__":
main()
我现在需要添加的是一些逻辑,可以在测试期间保持连接打开。当我同时运行实际查询时,有人可以提供关于保持数据库连接打开的最佳方法的指导吗?这将符合我的测试目标。提前谢谢。
答案 0 :(得分:2)
我想你可能不想使用套接字。我会尝试使用像MySQLdb这样的库。
import MySQLdb
# connect
con = MySQLdb.connect(host="localhost", user="appuser", passwd="",db="onco")
您可以使用ping方法检查连接是否已启动:
def is_connection_up(connection):
if connection.ping() == 0:
return True
else:
return False
所以你可以这样做:
import MySQLdb
import time
def is_connection_up(connection):
if connection.ping() == 0:
return True
else:
return False
host,user,pwd,db = "localhost","user","pwd","db"
connections = [MySQLdb.connect(host=host,user=user,passwd=pwd,db=db) for i in range(10)]
while True:
time.sleep(10)
for con in connections:
if is_connection_up(con) is not True:
raise Exception("Connection is down, test might have gone wrong")