settings.py中的配置DATABASE_ENGINE = ''
DATABASE_NAME = ''
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''
注意用数据库mysql的话DATABASE_HOST这里必须填mysql.sock的绝对路径
数据库引擎设置
postgresql PostgreSQL psycopg 版本 1.x,http://www.djangoproject.com/r/python-pgsql/1/.
postgresql_psycopg2 PostgreSQL psycopg 版本 2.x,http://www.djangoproject.com/r/python-pgsql/.
mysql MySQL MySQLdb , http://www.djangoproject.com/r/python-mysql/.
sqlite3 SQLite Python 2.5+ 内建。 其他, pysqlite ,http://www.djangoproject.com/r/python-sqlite/.
ado_mssql Microsoft SQLServer adodbapi 版本 2.0.1+,http://www.djangoproject.com/r/python-ado/.
oracle Oracle cx_Oracle ,http://www.djangoproject.com/r/python-oracle/.1
from django.shortcuts import render_to_response
import MySQLdb
def book_list(request):
db = MySQLdb.connect(user='me', db='mydb', passwd='secret', host='localhost')
cursor = db.cursor()
cursor.execute('SELECT name FROM books ORDER BY name')
names = [row[0] for row in cursor.fetchall()]
db.close()
return render_to_response('book_list.html', {'names': names})
首先先要打开数据库service mysqld start
然后是mysql数据库建立过程:mysql -h localhost -u root -p这样打开的话密码为空,看到提示输入密码直接敲回车就好了,这样的话用户就是root,建立在本地,可以通过mysql的安装目录察看mysql_config文件来查找socket的位置,一般默认在/var/lib/mysql/mysql.sock
mypasswd
create database slqt;(slqt为数据库名称,注意;必须是英文的,否则不管有没有报错该数据库都没有成功建立)
测试mysql的django配置是否成功,进入django网站文件夹下,终端中输入python manage.py shell
输入下面这些命令来测试你的数据库配置:
>>> from django.db import connection
>>> cursor = connection.cursor()
如果没有显示什么错误信息,那么你的数据库配置是正确的。否则,你就得查看错误信息来纠正错误。
简化版使用mysql
from django.shortcuts import render_to_response
from mysite.books.models import Book
def book_list(request):
books = Book.objects.order_by('name')
return render_to_response('book_list.html', {'books': books})
自省(运行时自动识别数据库)会导致过载和有数据完整性问题。为了提供方便的数据访问API, Django需要以某种方式知道数据库层内部信息,有两种实现方式。第一种方式是用Python明确的定义数据模型,第二种方式是通过运行时扫描数据库来自动侦测识别数据模型。
第二种方式看起来更清晰,因为数据表信息只存放在一个地方-数据库里,但是会带来一些问题。首先,运行时扫描数据库会带来严重的系统过载。如果每个请求都要扫描数据库的表结构,或者即便是服务启动时做一次都是会带来不能接受的系统过载。(Django尽力避免过载,而且成功做到了这一点) 其次,有些数据库,例如老版本的MySQL,没有提供足够的元数据来完整地重构数据表。