以下の静的メソッド(flaskyから取得)は、データベースに偽のデータを取り込むための方法で、Djangoにインポートします。DjangoでIntegrityErrorが発生した場合にデータベースをロールバックする方法は?
models.py
class User(UserMixin, db.Model):
# ......
@staticmethod
def generate_fake(count=100):
from sqlalchemy.exc import IntegrityError
from random import seed
import forgery_py
seed()
for i in range(count):
u = User(email=forgery_py.internet.email_address(),
username=forgery_py.internet.user_name(True),
password=forgery_py.lorem_ipsum.word(),
confirmed=True,
name=forgery_py.name.full_name(),
location=forgery_py.address.city(),
about_me=forgery_py.lorem_ipsum.sentence(),
member_since=forgery_py.date.date(True))
db.session.add(u)
try:
db.session.commit()
except IntegrityError:
db.session.rollback()
私はUser.objects.create(...)
ような何かを行うことができますが、問題は、ですが、私は(原因重複する主キーに推測)IntegrityError
が発生した場合にデータベースをロールバックする方法がわかりません。
私は単純に 'except IntegrityError:pass'と書くことができますか? –
確かに、警告の言葉:IntegrityErrorは、Djangoではなく、データベースによって報告されたエラーの*エフェクト*です。データベースが整合性を気にしない場合、例外は発生せず、Djangoは何も通知しません。 – fixmycode