繁体   English   中英

如何从外部服务器读取数据并在 Django 中的本地 Db 文件上应用迁移?

[英]How to read data from an External Server and apply migrations on a local Db file in Django?

我的情况如下:

我有一个具有只读访问权限的外部数据库,我想从其中导入我的数据模型,我使用的是:

python manage.py inspectdb > models.py

在导入模型后处理完所有异常后,当我尝试迁移时,它会请求写入外部数据库的权限,以创建额外的表以运行 django 项目,如admin, auth, contenttypes, sessions

如何继续从外部数据库读取数据以运行 REST API,同时将 Auth 和其他重要表所需的迁移应用到另一个本地存储的数据库?

以下是我得到的错误:

LINE 1: CREATE TABLE "django_migrations" ("id" serial NOT NULL PRIMA...
                     ^


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\db\migrations\recorder.py", line 67, in ensure_schema
    editor.create_model(self.Migration)
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\db\backends\base\schema.py", line 307, in create_model
    self.execute(sql, params or None)
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\db\backends\base\schema.py", line 137, in execute
    cursor.execute(sql, params)
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\db\backends\utils.py", line 99, in execute
    return super().execute(sql, params)
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\db\backends\utils.py", line 67, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\db\utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
    return self.cursor.execute(sql)
django.db.utils.ProgrammingError: permission denied for schema public
LINE 1: CREATE TABLE "django_migrations" ("id" serial NOT NULL PRIMA...
                     ^


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\core\management\__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\core\management\base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\core\management\base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\core\management\base.py", line 83, in wrapped
    res = handle_func(*args, **kwargs)
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\core\management\commands\migrate.py", line 232, in handle
    post_migrate_state = executor.migrate(
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\db\migrations\executor.py", line 91, in migrate
    self.recorder.ensure_schema()
  File "C:\Users\prateek.jain\Anaconda3\lib\site-packages\django\db\migrations\recorder.py", line 69, in ensure_schema
    raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)" % exc)
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table (permission denied for schema public
LINE 1: CREATE TABLE "django_migrations" ("id" serial NOT NULL PRIMA...
                     ^
)

查看 django 中的多数据库支持。 您可以将 django 迁移(如admin, auth, contenttypes,.. etc )路由到本地数据库。 并使用远程只读数据库进行读取。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM