我有一个使用套接字和线程的Python脚本,允许10个服务器连接到一个端口。每个服务器都转储一串数据。有时,数据会快速进入,有时会涓涓细流。
Python脚本获取数据blob,执行子字符串计数以获得"列"值,然后使用pymssql将其发送到MSSQL。很直接。
这是脚本的MSSQL部分片段:
dbConn = pymssql.connect(server=mssql_server, user=mssql_user, password=mssql_pass, database=mssql_db)
cursor = dbConn.cursor()
date = data[0:6]
time = data[7:11]
duration = data[12:16]
mssql_output_raw = "('%s','%s','%s');" % (date, time, duration)
mssql_output = mssql_output_raw.replace(" ", "") # Remove any whitespace
# Write to MSSQL table
try:
query = "INSERT INTO %s VALUES %s" % (mssql_table, mssql_output)
cursor.execute( query )
dbConn.commit()
except pymssql.OperationalError as e:
logmsg("pymssql.OperationalError exception caught: %s" % str(e).replace("\n", " ") )
except:
pass
每隔一段时间(也许当数据快速进入时?)我会得到这个例外:
20019,
'DB-Lib error message 20019, severity 7:
Attempt to initiate a new Adaptive Server operation with results pending
脚本不会崩溃,因为脚本要么a)在后台运行;或者b)在前景但是喷出数据时,我不确定数据是否会进入MSSQL。
任何人都可以分享这个错误的含义吗?
答案 0 :(得分:0)
我可能已经想到了这一点。在我的脚本中,我使用了线程。所有线程都有1个SQL连接器。我的猜测是,一个SQL连接器被所有查询所淹没。
我已更新了我的脚本,以便每个线程都有自己的连接器。到目前为止一切都很好。