最近在学django web开发,几乎所有的教程最开始都是教django关联数据库(完全不知道为啥。。。。),看了很多的教程,东一句西一句的,没有一个完整的可用教程。而且由于django版本更新,很多以前的命令、设置都变了,所以自己写一篇博客,将来说不定会用到。
已知已经创建了一个项目“”mysite”,在此项目下创建了应用“myapp”,现需要在“myapp”中配置sqlite3。
注:本篇博客用的django版本为1.10.6
一、sqlite3安装
参考链接,安装sqlite3
二、sqlite3创建数据库
(示例:在当前目录下创建一个新的数据库“test.db”,此段步骤参考:菜鸟教程-sqlite创建数据库)
进入当前项目目录(例如:‘D\python\workspace\mysite’),打开cmd,输入以下命令:
sqlite3 test.db
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
数据库创建成功后使用.databases命令来检查它是够在数据库列表中,如下所示:
sqlite>.databases
main: D:\python\workspace\mysite\test.db
使用.quit命令退出sqlite提示符,打开文件夹即可看到创建的“test.db”文件。
三、修改settings.py文件
(此段步骤参考:django数据库使用)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': {path\name.db}',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
四、进入数据库文件cmd界面,运行python manage.py shell
(此段参考同三)
运行结果如下:
D:\Python\Workspace\mysite>python manage.py shell
Python 2.7.12 |Anaconda custom (64-bit)| (default, Jun 29 2016, 11:07:13) [MSC v.1500 64 bit (AMD64)]
Type "copyright", "credits" or "license" for more information.
IPython 5.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
输入以下命令:
In [1]: from django.db import connection
In [2]: cur = connection.cursor()
如果没报错,则表示配置成功
五、修改models.py文件,配置自己的表
(此段参考同三)
models.py中输入以下代码:
from django.db import models
from django.contrib import admin
class BlogPost(models.Model):
title = models.CharField(max_length = 150)
body = models.TextField()
timestamp = models.DateTimeField()
class Meta:
ordering = ['-timestamp']
六、同步数据库
(此段参考:自强学堂-Django教程和django官方文档)
打开cmd,输入命令:python manage.py makemigrations myapp
会看到以下结果:
Migrations for 'myapp':
myapp\migrations\0001_initial.py:
- Create model BlogPost
接着输入命令:python manage.py migrate myapp 0001
看到如下结果表明数据库创建成功
BEGIN;
--
-- Create model BlogPost
--
CREATE TABLE "myapp_blogpost" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "title" varchar(150) NOT NULL, "body" text NOT NULL, "timestamp" datetime NOT NULL);
COMMIT;
大功告成!!!
我的第一篇技术博客,也是第一次用markdown(真的超好用),从来没想到自己也会写技术博客。
今天心情复杂又难过。看了好几篇曾国藩日记,希望能从圣贤的智慧中学到行事之道,学会管理自己的情绪。
莫慌张。