一、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文件,再通过命令读入参考文档