1

データをDBに挿入するために生のSQLクエリを使用しています。挿入は正しく機能しています。たとえば、この挿入クエリでいくつかのチェックを実行したいのですが、たとえば、クエリがデータを挿入した場合、または次のような挿入クエリがあるとは思わない場合

cursor.execute("some insert query" )

cursor.execute行が挿入されたかどうかを知りたい 場合は、成功のようなテキストを表示し、何らかの理由で挿入に失敗した場合はエラーのようなテキストを表示し、行が既に挿入されている場合は行が既に存在することを示します。

しかし、これらのチェックを で実行する方法がわかりませんcursor.execute

編集

for i in range(numrows):
                row = cursor.fetchone()
                if row[6]==1:
                        arr["user_id"]=row[0]
                        arr["email"]=row[1]
                        arr["style_quiz_score"]=row[2]
                        arr["style_quiz_answer"]=row[3]
                        arr["date_joined"]=row[4]
                        arr["is_active"]=row[5]
                        arr['firstname'] = row[7]

                        arr["username"]=re.sub(r'[^a-zA-Z0-9]', '_', arr["email"])
                elif row[6]==2:
                        arr['lastname'] = row[7]
        cursor1.execute("insert into auth_user(id,username,first_name,last_name,email,password,is_staff,is_active,is_superuser,date_joined,last_login)  values(%s,%s,%s,%s,%s,'NULL',0,%s,0,%s,0)",[arr["user_id"],arr["username"],arr['firstname'],arr['lastname'],arr["email"],arr["is_active"],arr["date_joined"]])

forloopの外で実行する cursor1.executeと最後のエントリが挿入されますが、forloop内で実行するとエラーが発生し、何も挿入されません

4

1 に答える 1

2

Djangoを使用していると仮定すると(質問では具体的ではありませんが、djangoタグを使用しています)、で挿入クエリを発行した後にtransaction.commit_unless_managed()( )を実行する必要があります。from django.db import transactioncursor.execute

呼び出し時に例外をチェックしてcommit_unless_managed、挿入がうまくいったかどうかを確認できます。

from django.db import connection, transaction, DatabaseError, IntegrityError

cursor = connection.cursor()
cursor.execute("some insert query" )

try:
    transaction.commit_unless_managed()
except DatabaseError, IntegrityError:
    print 'error'
else:
    print 'success'
于 2013-02-07T10:53:14.410 に答える