django 与mysql数据库操作_Django 同时连接mysql 和sqlite3 数据库操作

本文介绍了如何在Django项目中同时配置并使用MySQL和SQLite3数据库,包括在settings.py中设置数据库配置,创建数据库路由,编写路由文件以实现不同应用连接不同数据库,并展示了在models.py中指定模型的数据库和表名。
摘要由CSDN通过智能技术生成

一个数据库对一个app

setting.py 配置文件

DATABASES = {

"default": {

"ENGINE": "django.db.backends.sqlite3",

"NAME": os.path.join(BASE_DIR, "db.sqlite3"),

},

"db1": {

"ENGINE": "django.db.backends.mysql",

"NAME": "django_advanced",

"HOST": "127.0.0.1",

"PORT": "3306",

"USER": "root",

"PASSWORD": "root",

}

配置数据库路由 setting.py

DATABASES_APPS_MAPPING = {

"polls": "default",

"polls2": "db1",

}

DATABASE_ROUTERS = ["my_blog.database_app_router.DatabaseAppsRouter"]

# my_blog 路由文件目录

编写路由文件 database_app_router.py

from django.conf import settings

class DatabaseAppsRouter(object):

def db_for_read(self, model, **hints):

app_label = model._meta.app_label

if app_label in settings.DATABASES_APPS_MAPPING:

res = settings.DATABASES_APPS_MAPPING[app_label]

print(res)

return res

return None

def db_for_write(self, model, **hints):

app_label = model._meta.app_label

if app_label in settings.DATABASES_APPS_MAPPING:

return settings.DATABASES_APPS_MAPPING[app_label]

return None

def allow_relation(self, obj1, obj2, **hints):

# 获取对应数据库的名字

db_obj1 = settings.DATABASES_APPS_MAPPING.get(obj1._mata.app_label)

db_obj2 = settings.DATABASES_APPS_MAPPING.get(obj2._mata.app_label)

if db_obj1 and db_obj2:

if db_obj1 == db_obj2:

return True

else:

return False

return None

def db_for_migrate(self, db, app_label, model_name=None, **hints):

if db in settings.DATABASES_APPS_MAPPING.values():

return settings.DATABASES_APPS_MAPPING.get(app_label) == db

elif app_label in settings.DATABASES_APPS_MAPPING:

return False

return None

新建app python manage.py startapp polls2

注册setting

INSTALLED_APPS = [

"polls2",

]

添加模版OK

同一个app下使用不同的数据库

上面配置是一样的

models.py 编写

class Book2(models.Model):

author = models.CharField(max_length=1024, blank=True, null=True)

title = models.CharField(max_length=1024)

class Meta:

app_label = "polls2" # app_label 指定数据库

db_table = "week_company_data" # db_table 指定表名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值