jaydebeapi
jaydebeapi copied to clipboard
Multiple Connections, either all at the same time or one at a time, in one script
When I run this on Windows, the first connection works. All the others fail.
`p8_dbs_connect_urls = [['d','jdbc:db2://HOST:PO00/DDDB:user=USER5m;password={0:s};sslConnection=false;'], ['d','jdbc:db2://HOST:PO02/DDDB:user=USER5m;password={0:s};sslConnection=false;'], ['d','jdbc:db2://HOST:PO00/DUDB:user=USER5m;password={0:s};sslConnection=false;'], ['p','jdbc:db2://l2p7.bnymellon.net:3600/DPDB:user=USER5m;password={0:s};sslConnection=false;']]
jardb2 = [os.path.join(os.path.split(os.path.realpath(file))[0],"db2jcc4.jar"), os.path.join(os.path.split(os.path.realpath(file))[0],"db2jcc_license_cu.jar")] drvdb2 = "com.ibm.db2.jcc.DB2Driver" conn = [] for ix,dbs_conn_url in enumerate(p8_dbs_connect_urls): logging.info("connect %s entry %d",str(datetime.now()),ix) try: conn.append(jaydebeapi.connect(drvdb2, dbs_conn_url[1].format(pwd if dbs_conn_url[0] == env else pwp), jars=jardb2)) logging.info("close %s",str(datetime.now())) conn[ix].close() except (Exception) as e: logging.error(e) `
Error connect 2017-09-28 11:20:31.642522 entry 3 An error occurred while calling z:java.sql.DriverManager.getConnection. Trace: py4j.Py4JException: Method getConnection([class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.l ang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.St ring, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.l ang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.St ring, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.l ang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.St ring, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.l ang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.St ring, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String, class java.lang.String]) does not exist at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318) at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:339) at py4j.Gateway.invoke(Gateway.java:276) at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) at py4j.commands.CallCommand.execute(CallCommand.java:79) at py4j.GatewayConnection.run(GatewayConnection.java:214) at java.lang.Thread.run(Unknown Source)
I don't see much published help on how to make repeated connections to different resources. Edit - masked some literals at the request of DLP
Found a way around this. Not perfect for all cases. I put the single JDBC connection into a separate script and then use subprocess.call(command, shell=True) to run it. Not elegant, but it works for my current use case.