2016-04-19 10 views
1

ソケットとスレッドを使用して10台のサーバがポートに接続できるPythonスクリプトがあります。各サーバーは一連のデータをダンプします。Python pymssql結果が保留中の新しいAdaptive Server操作を開始しようとしました

Pythonスクリプトはデータブロブを取り、サブストリングカウントを行い「カラム」値を取得してから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 

スクリプトはクラッシュしません。また、スクリプトはバックグラウンドで実行されているため、またはb)フォアグラウンドでデータを吐き出しても、データがMSSQLにデータを渡すかどうかはわかりません。

このエラーの意味は誰にでも分かりますか?

答えて

0

私はこれを理解したかもしれません。私のスクリプトでは、スレッドを使用しています。すべてのスレッドに対して1つのSQLコネクターがありました。私の推測では、1つのSQLコネクタがすべてのクエリで圧倒されていたということです。

各スレッドが独自のコネクタを持つようにスクリプトを更新しました。ここまでは順調ですね。

関連する問題