保持连接打开以进行测试

时间:2014-04-21 22:34:06

标签: python mysql

我正在尝试进行数据库测试,其中我对数据库运行事务集,同时向数据库打开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()

我现在需要添加的是一些逻辑,可以在测试期间保持连接打开。当我同时运行实际查询时,有人可以提供关于保持数据库连接打开的最佳方法的指导吗?这将符合我的测试目标。提前谢谢。

1 个答案:

答案 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")