91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用django怎么鏈接多個數據庫

發布時間:2021-04-16 16:23:37 來源:億速云 閱讀:319 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關使用django怎么鏈接多個數據庫,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

settings文件如下:

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
  },
  'db1': {  # 配置第二個數據庫節點名稱
    'ENGINE': 'django.db.backends.oracle',
    'NAME': 'devdb',
    'USER': 'hysh',
    'PASSWORD': 'hysh',
    'HOST': '192.168.191.3',
    'PORT': '1521',
  },
}

查找Django的文檔:

from django.db import connection
 
def my_custom_sql(self):
  with connection.cursor() as cursor:
    cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [self.baz])
    cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz])
    row = cursor.fetchone()
 
  return row

上述方法是設置中如果有多個數據庫,會默認使用 default,當你想使用指定的數據庫連接時,引入的對象就變成了connections !

from django.db import connection
 
def my_custom_sql(self):
  with connection.cursor() as cursor:
    cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [self.baz])
    cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz])
    row = cursor.fetchone()
 
  return row

之后再進行操作。

補充知識:Django多數據源接入類

from rest_framework.generics import GenericAPIView
from rest_framework.response import Response
from rest_framework import status
from django.db import transaction


from .contants import db_dict

contants.py的內容

(

import cx_Oracle
import pymysql

# 定義一個數據庫類型&引擎的字典,
db_dict = {'mysql':pymysql,'Oracle':cx_Oracle}

)
from .models import DataSystem,Rule


class DBconnectView(GenericAPIView):
  __DBtype = db_dict
  def get(self,request,pk,rule_id):

    # 通過傳入的id進行對應的數據庫鏈接
    self.datas = DataSystem.objects.get(pk=pk)
    self.url = self.datas.url
    self.username = self.datas.username
    self.password = self.datas.password_enc
    self.DBname = self.datas.name
    self.DBtype = self.__DBtype[self.datas.type]

    # 獲取check_code規則
    self.ruledatas = Rule.objects.get(id=rule_id)
    self.check_code = self.ruledatas.check_code
    # db = __import__(self.DBtype)

    try:
      conn = self.DBtype.connect(host=self.url,user=self.username,password=self.password,database=self.DBname)
      # 鏈接成功后創建一個游標
      cs_ms = conn.cursor()
    except Exception as e:
      raise e
    else:
      # 明顯的開啟事務
      with transaction.atomic():
        # 在安全的地方,創建保存點,將來操作數據庫失敗回滾到此
        save_id = transaction.savepoint()

        try:

          # 獲取一個元組
          db_ret = cs_ms.execute(self.check_code)
        except Exception as e:
          transaction.savepoint_rollback(save_id)
          raise e
        else:
          db_set = db_ret.fetchone()
          # transaction.savepoint_commit(save_id)
    finally:
      cs_ms.close()
      conn.close()

    return Response({'pk':pk,'rule_id':rule_id})

關于使用django怎么鏈接多個數據庫就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德格县| 汉源县| 新田县| 南丹县| 太仓市| 贺州市| 札达县| 鄂温| 平谷区| 晋中市| 东丰县| 黄梅县| 嵊泗县| 榕江县| 济南市| 彝良县| 介休市| 修水县| 离岛区| 宝清县| 绥宁县| 惠州市| 青神县| 精河县| 奉贤区| 兴和县| 许昌市| 莱阳市| 安图县| 页游| 刚察县| 拉孜县| 卫辉市| 淮安市| 旬邑县| 汝南县| 游戏| 晋江市| 富蕴县| 丰城市| 南江县|