背景

在 Django 项目中 需要用到两个数据库,一个是Django默认使用的数据库,另一个则是已经存在的mysql数据库。

连接数据库方式

在 settings.py 中 增加一个数据库的连接方式:
其中 maccms 为自定义名称,为了区分数据库。Django默认orm查询使用的default,而且default即使不用 也不能删除,若不使用的话可以设置为空: ‘default’:{}

  1. DATABASES = {
  2. 'default': {
  3. 'ENGINE': 'django.db.backends.sqlite3',
  4. 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
  5. },
  6. 'maccms': {
  7. 'ENGINE': 'django.db.backends.mysql',
  8. 'NAME': 'app_ouketv_xyz',
  9. 'USER': 'app_ouketv_xyz',
  10. 'PASSWORD': 't3DdzKikX7WKbN6e',
  11. 'HOST': '103.152.132.108',
  12. 'PORT': '3306',
  13. 'OPTIONS': {'isolation_level': None}
  14. }
  15. }

多数据库时指定数据库使用

  1. Author.objects.using('default').all()
  2. Author.objects.using('other').all()
  3. my_object.delete(using='legacy_users')

使用sql语句对mysql进行查询

创建了一个共用方法,使用时直接实例化该函数并传入sql语句即可

  1. def exc_sql(sql):
  2. """
  3. 执行sql
  4. :param sql:
  5. :return:
  6. """
  7. with connections['maccms'].cursor() as cursor:
  8. cursor.execute(sql)
  9. result = cursor.fetchall()
  10. return result