Django里使用sqlite3做Session

时间:2022-06-05 05:26:04

    django 的session需要使用数据库。以前只用过mysql去存储session。但是现在,我可不想为了用session,而去费力的装个mysql。后来看了看django step by step,才知道:“在Python2.6中内置了sqlite3数据库,可以直接的使用sqlite3。sqlite3可以直接使用本地文件存储数据库,因此不存在服务器、端口、用户名、密码、权限的配置问题,马上就可以使用。”

如何设置使用

其实在settings.py原始配置里都写好告诉我们了,如何使用sqlite3作为session数据库:

所以,按下边的配置的提示更改稍微更改一下:

DATABASES = {
    'default': {
        'ENGINE': 'sqlite3',             # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': './session.db',       # Or path to database file if using sqlite3.

        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',           # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

注意,还需要在settings.py里面的MIDDLEWARE_CLASSES中加入'django.middleware.csrf.CsrfResponseMiddleware'。否则会报CSRF verification failed.错误的。

然后运行命令,建立sqlite3的数据库:

python manage.py syncdb

之后按提示输入用户名、Email和密码。

再次启动django,就可以使用基于sqlite3的session了!真是很简单,很方便啊!


#######################华丽的分隔线##############################

附注:

解决无法在python里导入sqlite3的问题

今天用运营商那边的服务器,centos 5.5,装了python2.6.5之后,无法import sqlite3。

原因是运营商那边的机器,没有安装sqlite-devel所致。

在网上查了一下,解决办法是,先装sqlite-devel

yum install sqlite-devel -y

之后,重新编译安装python,问题解决。