pyodbc

2017-06-27 6 views
0

とINSERTに主キーを返す私は、SQLデータベースへのデータの束を挿入するプログラムを持っています。データは、それぞれがタグの数を持つ、レポートで構成されています。フィールドを持ってpyodbc

タグは、関連するレポートの主キーを参照している、をREPORT_ID。

さて、私はデータを挿入するたびに、200のレポートまたはそれ以上、各多分持つ400個のタグが存在することができます。だから、擬似コードで私は今これをやっている:

for report in reports: 
    cursor_report = sql('INSERT report...') 
    cursor_report.commit() 
    report_id = sql('SELECT @@IDENTITY') 

    for tag in report: 
     cursor_tag += sql('INSERT tag, report_id=report_id') 
    cursor_tag.commit() 

私は理由のカップルのためにこれを好きではありません。ほとんど私はSELECT @@IDENTITYステートメントが好きではありません。

  1. これは、別のプロセスが適切なタイミングでデータを挿入していた場合、ステートメントが間違った主キーを返すことを意味しませんか?
  2. は、私はむしろINSERT report...のようなことが可能であり、挿入されたプライマリキーを返すでしょうか?

私は現在、レポートの間にコミットする必要があるので、プログラムはこれらの瞬間に「一時停止」します。私が最後にすべてをコミットすることができれば、それは費やされる時間を大幅に短縮するでしょう。私はタグreport_id = (SELECT id FROM reports WHERE seperate_field=?)か何かことができるように識別するために使用レポートがに別々のフィールドを作成し検討してきたが、それは非常にエレガントないないようです。

答えて