django与mysql数据库(django 的 ORM 单独使用 vkill’blog “技术本身没有太多价值,掌握了新的思考方式才是真的收获”)
到底啥时候使用呢 ,比如说我们开发网站时要写入基础数据这些的时候 ,用sql ? 太土了 ,还有关联表的数据sql可就麻烦了
好了 ,上代码1 、不依赖 django project 单独使用
import os
from django.conf import settings
settings.configure(
#DATABASE_ENGINE = sqlite3,
#DATABASE_NAME= os.path.join( os.path.dirname(__file__), db\\sqlite3.db),
DATABASES = {
default: {
ENGINE: sqlite3,
NAME: os.path.join( os.path.dirname(__file__), db\\sqlite3.db),
}
}
)from django.db import models
class Person(models.Model):
class Meta:
db_table = persons
app_label = testcreated_at = models.DateTimeField(created_at, auto_now_add = True)
updated_at = models.DateTimeField(updated_at, auto_now = True)
name = models.CharField("name", max_length = 20)
age = models.IntegerField("age")p = Person()
p.name = "a"
p.age = 111
p.save()2 、依赖django project ,其实就是使用了 django project 中的 settings 和 models ,这个很像rails 中的seed ,哈哈
注意哈 ,下面代码中加 path 那段要理解下意思再加啊 ,不要乱加,我的seed.py位置在 #{django_project}/db/seed.pyimport os
os.sys.path.append(os.path.join( os.path.dirname(__file__), ..)) #add project root directory to sys.path
import settings as project_settingsfrom django.conf import settings
settings.configure(
DATABASES = project_settings.DATABASES
)from firstapp.models import *
p = Person()
p.name = "a"
p.age = 111
p.save()3 、使用 manage.py db_seeds ,类似于 rails 中的 rake db:seed 那样 ,呵呵,这个和2差不多 ,只不过是用了 django 的manage.py 来执行 ,更django
1)写 command文件,lib/django13/management/commands/db_seeds.py 文件内容如下 ,注意这里把 lib/django13 看成是 app ,像 django/contrib/auth 那样 ,management/commands 这个目录结构是死的 ,django从每个app的这个目录下下找 *.py ,文件名 db_seeds 就是 manage.py db_seeds 这里的from django.core.management.base import NoArgsCommand
import settings
import osclass Command(NoArgsCommand):
help = "exec db/seeds.py file for add master data."def handle_noargs(self, **options):
for app in settings.INSTALLED_APPS:
try:
exec("from %s.models import *" % app)
except:
pass
execfile(os.path.join(os.path.dirname(settings.__file__), db/seeds.py))2)settings.py 中 INSTALLED_APPS 里启用 lib.django13 这个app
INSTALLED_APPS = (
django.contrib.auth,
......
south,
lib.django13,
)3)项目目录/db/seeds.py 内容如下
Last modified by vkill on2011/05/27 11:03
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!