首页 > 代码库 > 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交互