首页 > 代码库 > django与mysql交互

django与mysql交互

查看ubuntu已安装的所有软件:

dpkg -l  
dpkg -l | grep mysql


查看软件安装的路径

dpkg -L | grep mysql


查看开机启动的软件,需要额外安装插件:

sudo apt-get install rcconf
rcconf

更能全一点的:
sudo apt-get install sysv-rc-conf
sysv-rc-conf


安装mysql:

# apt-get install python-setuptools libmysqld-dev libmysqlclient-dev 
# easy_install mysql-python
或者 #pip install mysql-python



django setting配置:

DATABASES = {
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.mysql‘, 
        ‘NAME‘: ‘books‘,    #你的数据库名称
        ‘USER‘: ‘root‘,   #你的数据库用户名
        ‘PASSWORD‘: ‘‘, #你的数据库密码
        ‘HOST‘: ‘‘, #你的数据库主机,留空默认为localhost
        ‘PORT‘: ‘3306‘, #你的数据库端口
    }
}


在model模块中添加如下建表语句:

from django.db import models
# Create your models here.
class publisher(models.Model):
name=models.CharField(max_length=30)
address=models.CharField(max_length=50)
city=models.CharField(max_length=60)
state_province=models.CharField(max_length=30)
county=models.CharField(default="CN",max_length=50)
website=models.URLField()
class author(models.Model):
first_name=models.CharField(max_length=30)
last_name=models.CharField(max_length=40)
email=models.EmailField(blank=True)
class book(models.Model):
title=models.CharField(max_length=100)
authors=models.ManyToManyField(author)
publisher=models.ForeignKey(publisher)
publication_date=models.DateField()

django会把上面这些自动改成sql语句。



python manage.py validate   #测试上面的语句是否有问题。

python manage.py sqlall app   #把上面的内容生成sql语句。

运行上面这条命令出现的错误:
CommandError: App ‘app‘ has migrations. Only the sqlmigrate and sqlflush commands can be used when an app has migrations.
解决:
删除app中migrations文件夹。


python manage.py syncdb  #把这些语句写入数据库中。

#选yes建立数据库后台管理的账号和密码。

#如果这步跳过了,则执行:

python manage.py createsuperuser  #创建用户
python manage.py changepassword   #更改密码



#练习在python交互模式下操作数据库:

./manage.py shell              #进入django变量的交互器
from app.models import publisher #导入publisher数据库。


#插入一条数据:

p1=publisher(name=‘qinghua university‘,address=‘wudaokou‘,city=‘beijing‘,state_province=‘beijing‘,county=‘china‘,website=‘www.qinghua.com‘)

p1.name    #查看插入的name

p1.address  #查看插入的address

p1.save()   #插入的数据写入数据库中


#更新一条数据:

p1.address="qinghualu"
p1.save()



#查看所有的数据

在models模块中,建表语句下面添加如下:

def __unicode__(self):
return self.name,self.address

然后再去交换窗口查看所有数据:

publisher.objects.all()


#查询国家等于中国的一条数据:

publisher.objects.filter(country="china")


#查询出来的数据进行更改:

a=publisher.objects.get(name="beijing daxue")
a.county="USA"
a.save()


#高效的更新数据方式,并且无需save:

publisher.objects.filter(id=1).update(name="qingdaodaxue")



#在浏览器中打开后台管理数据库界面:

http://192.168.110.106/admin/


账号就是同步数据库时创建的用户名和密码,登陆进去。

在app下创建一个admin.py的文件

vi admin.py

from django.contrib import admin
from app.models import publisher,author,book
admin.site.register(publisher)
admin.site.register(author)
admin.site.register(book)

完成后,重新打开页面。



#django中引用bootstrap:

在setting.py中:

MEDIA_ROOT=‘/root/project/statics/bootstrap/‘


在url.py中:

from django.conf import settings


django与mysql交互