我正在使用原始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内部执行它比它给出错误并且不会插入任何内容
答案 0 :(得分:2)
假设您正在使用Django(在您的问题中没有具体说明,但您使用的是django标记),您需要在发出后transaction.commit_unless_managed()
(from django.db import transaction
)使用cursor.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'