【Django】数据库从sqlite切换为postgreSQL

一、postgreSQL下载安装

postgreSQL官方安装地址
菜鸟教程的windows安装教程
安装过程中会要求输入超级用户的密码,我的端口号默认是5432,其他就没什么不一样的了

二、Django代码改写

1、pip安装psycopg2包

2、settings.py

里面的database段设置从

DATABASES = {
     
    'default': {
     
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'mydatabase',
    }
}

改为

DATABASES = {
     
  'default': {
     
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': '数据库名',
    'USER': '用户名',
    'PASSWORD': '用户密码',
    'HOST': 'localhost',
    'PORT': '5432',
  }
}

这个时候运行runserver,报错django.db.utils.OperationalError的错,以为是没有migrate, migrate了一下还是报错,psycopg2.OpertaionalError+django.db.utils.OperationalError,看了一下具体信息有connect函数的错,那推测一下应该是连接的时候出问题了,所以回到了database的配置信息

2、在postgreSQL中新建数据库,与settings中配置NAME同名

首先肯定怀疑用户名和密码有没有错,首次安装完成 pg 数据库后,会默认自带一个用户。打开postgreSQL的shell,按几下回车并输入密码进入postgres=#,其实不用进行下一步查询就能知道用户名了就在前面的显示中。
如果前面的postgres=#显示变为postgres-#,说明命令语句没有打完整,是要输入分号才能结束语句的。

  • 查看数据库所有用户:\du
  • 查看当前连接用户:select * from current_user;
  • 创建新用户:create user dev with password ‘******’;
  • 修改用户密码:alter role postgres(这是用户名) with password ‘newpwd’;
    • 但这个修改密码的方式应该是不安全的,密码可能会以明文的方式被记录在log等地方
  • 查看当前postgresql的用户及对应密码:select rolname,rolpassword from pg_authid;

发现没有问题,那就是没有创建新的数据库。创建一个就行了。写下来的migrate和runserver都运行的很成功,

需要注意的是打开pgadmin之后要输两个密码,第一个密码是Master Password,我认为是pgdamin自己的密码,跟数据库应该没关系,可以直接点击按钮更改?第二个密码是数据库用户连接服务器的密码,需要在命令行用上面的语句修改

3、Django其他写好的代码也不用改

我忘了当初使用sqlite3时候,migrate之前需不需要自己手动创建数据库了,但我记得好像没有,因为我都不知道怎么打开sqlite3查看表中数据,可能它可以自动完成,所以配置其他数据库时我会忘了新建数据库这一步

三、一些其他数据库迁移的建议

官方文档说明:settings文件怎么写其他数据库的配置,参数设置(翻到Database的字样)

在查询过程中看到了很多sqlite3切换成mysql的,其他步骤大致一样,中间用pip安装个sql相关的包并在项目下的__init__.py文件下写点什么

数据库迁移时数据库中数据的迁移操作,简述一下就是通过命令生成json文件,再通过命令读入参考文档

你可能感兴趣的:(Django,postgresql,django)