정의 데이터베이스
장고 장고에 여러 데이터베이스를 사용하는 첫 번째 단계는 당신이 사용하고자하는 데이터베이스 서버를 이야기하는 것입니다.
데이터베이스는 선택의 별칭을 가질 수 있습니다. 그러나 별칭은 default
특별한 의미가있다. 장고는 별칭을 사용하여 default
기본 데이터베이스로한다.
예를 들어, settings.py
두 개의 데이터베이스의 정의, 기본 PostgreSQL 데이터베이스 및 MySQL 데이터베이스는 사용자라고 :
데이타베이스 =는 { ' 기본 ' { ' NAME ' : ' app_data ' , ' 엔진 ' : ' django.db.backends.postgresql ' , ' 사용자 ' : ' postgres_user ' , ' PASSWORD ' : ' s3krit는 ' } ' 사용자 ' : { ' NAME ' : '사용자 _ ', ' 엔진 ' : ' django.db.backends.mysql ' , ' 사용자 ' : ' mysql_user ' , ' PASSWORD ' : ' priv4te ' } }
다음 예는 settings.py
두 개의 기본이 아닌 데이터베이스 및 정의 의도적으로 빈을 :default 数据库
데이타베이스는 = { ' 기본 ' {} ' 사용자 ' : { ' NAME ' : ' 사용자 _ ' , ' 엔진 ' : ' django.db.backends.mysql ' , ' 사용자 ' : ' mysql_user ' , ' PASSWORD ' : ' superS3cret ' }, ' 고객 ' : { 'NAME ': ' customer_data ' , ' 엔진 ' : ' django.db.backends.mysql ' , ' 사용자 ' : ' mysql_cust ' , ' PASSWORD ' : ' veryPriv @ 먹은 ' } }
데이터베이스 동기화
#의 기본 케이스를 사용하여 기본 데이터베이스가 기본 데이터베이스가 불평하는 데이터베이스를 지정하지 않고 비어있는 파이썬은 마이그레이션 manage.py를 #을 특정 데이터베이스를 사용하려면 데이터베이스 지정해야 --database = 사용자를 마이그레이션 manage.py를 파이썬
수동으로 데이터베이스 선택
쿼리를 사용하여 호출 할 수있는 경우 () 데이터베이스를 수동으로 선택합니다.
() 사용하여 쿼리를 실행할 별칭 데이터베이스에 매개 변수를 받아들입니다. 예를 들면 :
>>> # 이것은 '기본'데이터베이스를 실행합니다.
>>> () Author.objects.all는
>>> # 이것은 위와 같은 효과입니다.
>>> Author.objects.using ( ' 기본 ' ) .ALL ( )
>>> # 이 지정한 '다른'데이터베이스를 실행합니다.
>>> Author.objects.using ( ' 기타 ' ) .ALL ()
지정된 데이터베이스에 데이터를 저장하려면, 예를 들어, 개체를 저장하는 legacy_users
데이터베이스, 당신은이를 사용할 수 있습니다 :
(= 사용 my_object.save ' legacy_users를 ' )
지정하지 않으면 using
, save()
방법은 라우터에 의해 할당 된 기본 데이터베이스에 저장됩니다.
다른 데이터베이스에 하나의 데이터베이스에서 개체를 이동
당신이 데이터베이스 인스턴스에 저장 한 경우, 사용하는 save(using=...)
새 데이터베이스로 마이그레이션 예를 들어. 당신은 몇 가지 의도하지 않은 결과를 초래할 수 있습니다 적절한 조치를 취할 수없는 경우.
p = 이용시 (NAME = " 프레드 " )
p.save (사용 = ' 제 ' )
p.save을 (사용 = ' 초 ' )
Person
객체를 저장 first
, 데이터베이스 p
기본 키, 장고 문제의 SQL이없는 INSERT
문. 이것은 기본 키를 생성합니다, 장고는 기본 키에 할당됩니다p;
'두 번째'데이터베이스에 저장할 때
p
기본 키 값을 가지고, 장고는 새 데이터베이스의 기본 키를 사용하려고 시도합니다. 경우 second
데이터베이스가 기본 키 값이 아닌, 그 다음 어떤 문제가되지 않습니다, 객체는 새 데이터베이스에 복사됩니다. 그러나, 데이터베이스에서 해당 데이터는 해당 데이터가 덮어 쓰기 될 때.p的主键
second
이 상황은 두 가지 방법으로 피할 수 있습니다. 첫째, 기본 키의 명확한 예 :
인격 = P (NAME = " 프레드 " )
p.save하십시오 (사용 = ' 먼저 ' )
p.pk = 없음 #는 P의 기본 키 값 제거
p.save하십시오 (사용 = ' 번째 ' ) # 기본 키 p없이 작성 예
또는 force_insert를 사용하는 save(),
장고 SQL을 실행할 수 있도록 INSERT
:
p = 이용시 (NAME = " 프레드 " )
p.save (사용 = ' 제 ' )
p.save을 (사용 = " 초 " , force_insert = TRUE)을
데이터베이스를 선택 제거 할
기본 동작은 객체 데이터베이스의 인스턴스를 삭제하는 것입니다
= U (User.objects.using ' legacy_users ' ) 갔지 (사용자 이름 = ' 프레드 ' )
u.delete () #을 'legacy_users'데이터베이스에서 '프레드'삭제
(), 데이터베이스에 지정된 데이터를 삭제 전송 키워드를 사용하고 저장하는 것은 비슷합니다.
당신이에서 사용자하려는 경우 예를 들어, legacy_users
로 마이그레이션 데이터베이스 new_users
데이터베이스를 다음과 같은 명령을 사용할 수 있습니다 :
user_obj.save는 (= 사용 ' NEW_USERS ' )
user_obj.delete합니다 (사용 = ' legacy_users 것은 ' ) #은 데이터를 지정된 데이터베이스를 삭제
메모, 수정의 신, 개인적인 사용을위한 환영 학습
자세한 장고 문서로는 :
HTTPS : //www.cnblogs.com/crazy-zjl/p/10251484.html 재현