python3框架Django使用postgreSQL数据库简单实践
2016-12-29 19:50
656 查看
刚刚研究了下postgreSQL,恰好最近一段时间又在学习python3框架Django,Django框架默认的是用SQLite数据库。于是试着改用postgreSQL数据库,简单记录一下做个笔记(我用的是mac电脑,PostgreSQL 9.5.5版本,Django 1.11版本):
1.Django框架连接postgreSQL数据库使用的是psycopg2。所以要先安装python框架psycopg2。安装直接用命令:pip3 install psycopg2就可以了。注意一点:安装之前要把postgreSQL安装目录下的bin目录放到PATH环境变量里面。我的是:
否则会报错误:Error:pg_config executable not found(好像给是这个错误,记不清了)
2.配置Django项目的settings.py文件,修改DATABASES配置项如下:
另外Django官方对postgreSQL数据库的连接有这些优化建议:
具体翻译如下:
优化PostgreSQL的配置
Django的数据库连接需要以下参数:
(1).client_encoding:’UTF8’,
(2).default_transaction_isolation:默认读取提交,或者在连接选项中设置的值(见下面)
(3).timezone:当USE_TZ为True时为“UTC”,否则为TIME_ZONE的值。
如果这些参数已经具有正确的值,Django将不会为每个新连接设置它们,这会稍微提高性能。 您可以直接在postgresql.conf中配置它们,或者更方便的是每个具有ALTER ROLE的数据库用户。
Django将工作正常没有这个优化,但每个新的连接将做一些额外的查询设置这些参数。
我的数据库就直接在postgreSQL数据库的数据目录下的postgresql.conf文件里面设置了。
3.当数据可配置完成之后,直接运行
python manage.py makemigrations
python manage.py migrate
但是运行时可能会报错。
在谷歌上搜索了好久,说的巨麻烦,结果想了个简单办法:直接把postgreSQL安装目录下lib目录下的libssl.1.0.0.dylib文件拷贝的/usr/lib目录下搞定:
解决方法也是把libcrypto.1.0.0.dylib文件拷贝到/usr/lib目录下:
这两个错误解决之后基本就可以直接运行:
python manage.py makemigrations
python manage.py migrate
也不会报错了。
(至于Django项目settings.py文件在哪,怎么定义数据库模型,这些问题不是本文的重点,不懂得先找些python的Django教程学习下吧,这里只是说明下Django连接postgreSQL时的配置以及当中会出现的问题。另外对于下面的两个错误如果谁有更好的解决方案也麻烦分享下。本人是python菜鸟,如有错误请指出,谢谢)
1.Django框架连接postgreSQL数据库使用的是psycopg2。所以要先安装python框架psycopg2。安装直接用命令:pip3 install psycopg2就可以了。注意一点:安装之前要把postgreSQL安装目录下的bin目录放到PATH环境变量里面。我的是:
否则会报错误:Error:pg_config executable not found(好像给是这个错误,记不清了)
2.配置Django项目的settings.py文件,修改DATABASES配置项如下:
DATABASES = { 'default':{ 'ENGINE':'django.db.backends.postgresql_psycopg2', 'NAME':'testdb',#数据库名字 'USER':'python3learner',#登录用户名 'PASSWORD':'123456789', 'HOST':'127.0.0.1',#数据库IP地址 'PORT':'5432', } }
另外Django官方对postgreSQL数据库的连接有这些优化建议:
具体翻译如下:
优化PostgreSQL的配置
Django的数据库连接需要以下参数:
(1).client_encoding:’UTF8’,
(2).default_transaction_isolation:默认读取提交,或者在连接选项中设置的值(见下面)
(3).timezone:当USE_TZ为True时为“UTC”,否则为TIME_ZONE的值。
如果这些参数已经具有正确的值,Django将不会为每个新连接设置它们,这会稍微提高性能。 您可以直接在postgresql.conf中配置它们,或者更方便的是每个具有ALTER ROLE的数据库用户。
Django将工作正常没有这个优化,但每个新的连接将做一些额外的查询设置这些参数。
我的数据库就直接在postgreSQL数据库的数据目录下的postgresql.conf文件里面设置了。
3.当数据可配置完成之后,直接运行
python manage.py makemigrations
python manage.py migrate
但是运行时可能会报错。
报错1:Library not loaded: libssl.1.0.0.dylib
YZQ-MacBook-Pro:zqxt_admin yinzeqiang$ python3 manage.py makemigrations Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/Django-1.11-py3.5.egg/django/db/backends/postgresql/base.py", line 20, in <module> import psycopg2 as Database File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/psycopg2/__init__.py", line 50, in <module> from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/psycopg2/_psycopg.cpython-35m-darwin.so, 2): Library not loaded: libssl.1.0.0.dylib Referenced from: /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/psycopg2/_psycopg.cpython-35m-darwin.so Reason: image not found
在谷歌上搜索了好久,说的巨麻烦,结果想了个简单办法:直接把postgreSQL安装目录下lib目录下的libssl.1.0.0.dylib文件拷贝的/usr/lib目录下搞定:
cp /Users/yinzeqiang/softDev/pgsql/lib/libssl.1.0.0.dylib /usr/lib/libssl.1.0.0.dylib
报错2:Library not loaded: libcrypto.1.0.0.dylib
YZQ-MacBook-Pro:zqxt_admin yinzeqiang$ python3 manage.py makemigrations Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/Django-1.11-py3.5.egg/django/db/backends/postgresql/base.py", line 20, in <module> import psycopg2 as Database File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/psycopg2/__init__.py", line 50, in <module> from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/psycopg2/_psycopg.cpython-35m-darwin.so, 2): Library not loaded: libcrypto.1.0.0.dylib Referenced from: /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/psycopg2/_psycopg.cpython-35m-darwin.so Reason: image not found
解决方法也是把libcrypto.1.0.0.dylib文件拷贝到/usr/lib目录下:
cp /Users/yinzeqiang/softDev/pgsql/lib/libcrypto.1.0.0.dylib /usr/lib/libcrypto.1.0.0.dylib
这两个错误解决之后基本就可以直接运行:
python manage.py makemigrations
python manage.py migrate
也不会报错了。
(至于Django项目settings.py文件在哪,怎么定义数据库模型,这些问题不是本文的重点,不懂得先找些python的Django教程学习下吧,这里只是说明下Django连接postgreSQL时的配置以及当中会出现的问题。另外对于下面的两个错误如果谁有更好的解决方案也麻烦分享下。本人是python菜鸟,如有错误请指出,谢谢)
相关文章推荐
- Python的Django框架中使用SQLAlchemy操作数据库的教程
- Python的Django框架中使用SQLAlchemy操作数据库的教程
- 在Python的Django框架中simple-todo工具的简单使用
- PythonWeb开发Django框架学习(十一)使用框架自带Admin管理数据库数据
- django框架使用postgresql数据库
- java连接postgreSQL数据库简单使用
- Python系列视频教程: Django【13讲】第八讲 数据库使用2
- Python Web 框架, 使用 Django 和 Python 开发 Web 站点
- Python使用PyGreSQL操作PostgreSQL数据库教程
- Python web框架Django学习(1)——在win7 64bit下配置开发环境Django:一个可以使Web开发工作愉快并且高效的Web开发框架。 使用Django,使你能够以最小的代价构建和
- 使用python将mdb数据库文件导入postgresql数据库示例
- Python Web 框架,第 1 部分: 使用 Django 和 Python 开发 Web 站点
- Python Web 框架,第 1 部分: 使用 Django 和 Python 开发 Web 站点
- python的分布式任务并行处理框架Jug简单使用
- python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
- python学习教程(六)Django框架的使用
- Python:操作PostgreSQL数据库(使用DB API2.0)
- 简单的三层框架以及使用dbutils进行数据库操作(入门)
- Python:操作PostgreSQL数据库(使用DB API2.0)
- python框架之django使用系列教程(1),原创,转载请注明出处