Django数据库类库MySQLdb使用详解


Posted in Python onApril 28, 2019

Django项目要操作数据库,首先要和数据库建立连接,才能让程序中的数据和数据库关联起来进行数据的增删改查操作

Django项目默认使用mysqldb模块进行和mysql数据库之间的交互操作。

下面看下Django进行数据库操作的步骤:

1. 修改settings.py 配置数据项

DATABASES = { 
  'default': { 
    'ENGINE': 'django.db.backends.mysql', 
    'NAME': 'mydatabase', 
    'USER': 'mydatabaseuser', 
    'PASSWORD': 'mypassword', 
    'HOST': '127.0.0.1', 
    'PORT': '3306', 
  } 
}

配置项参数用法:

ENGINE : 指定数据库驱动,不同的数据库这个字段不同,下面是常见的集中数据库的ENGINE的写法:

django.db.backends.postgresql  # PostgreSQL 

django.db.backends.mysql       # mysql 

django.db.backends.sqlite3     # sqlite 

django.db.backends.oracle      # oracle 

NAME: 指定的数据库名,如果是sqlite的话,就需要填数据库文件的绝对位置

USER: 数据库登录的用户名,mysql一般都是root

PASSWORD:登录数据库的密码,必须是USER用户所对应的密码

HOST: 由于一般的数据库都是C/S结构的,所以得指定数据库服务器的位置,我们一般数据库服务器和客户端都是在一台主机上面,所以一般默认都填127.0.0.1

PORT:数据库服务器端口,mysql默认为3306

HOST和PORT都可以不填,使用默认的配置,但是如果你有更改默认配置的话,就需要填入更改后的

2. 安装数据库驱动

配置完这,下面就需要装python连接mysql数据库的驱动程序,首先,需要安装mysql的开发包,在shell,里面运行:

rpm -qa | grep mysql-devel

如果没有安装,那就安装把:

sudo yum install mysql-devel 
#python2.7: 
sudo pip install MySQLdb 
#python3.4: 
sudo pip install PyMySQL

安装好后,启动django

python manager.py runserver

如果没有出现报错,则表明配置正常,然后在新的shell运行:

python manager.py shell

输入以下命令:

from django.db import connection 
cursor = connection.cursor()

如果没有报错,则就表明安装成功,你可以尽情使用django的数据库功能了

3. 创建一个Django app

一个项目中包含一个或多个这样的app。app可以理解为一块功能集合。比如产品管理模块就包含增删该查等功能,可以把产品管理叫做一个app。每个Django app都有独立的models,views等,易移植和被复用。

DOS进入项目目录 执行 python manage.py startapp products生成目录文件如下:

代码如下:

products/
  __init__.py
  models.py
  tests.py
  views.py

4. 编写models

代码如下:

from django.db import models
# Create your models here.
class Company(models.Model):
  full_name = models.CharField(max_length=30)
  address = models.CharField(max_length=50)
  tel = models.CharField(max_length=15,blank=True)
class Product(models.Model):
  product_name = models.CharField(max_length=30)
  price = models.FloatField()
  stock = models.IntegerField(max_length=5)
  company = models.ForeignKey(Company)

5. 模型安装(修改settings.py)

代码如下:

INSTALLED_APPS = (
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.sites',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'django.contrib.admin',
  'django.contrib.admindocs',
  'DjangoMysqlSite.products',
)

采用 python manage.py validate 检查模型的语法和逻辑是否正确。

没有错误则执行 python manage.py syncdb创建数据表。

现在你可以看到你的数据库除了生成了products_company,products_product外还创建了其它好几个表,这些是django管理后台所需表暂不管。

6、简单的增删改查

进入python manage.py shell

代码如下:

>>> from DjangoMysqlSite.products.models import Company
>>> c = Company(full_name='www.pythontab.com',address='beijing',tel=12345678)
>>> c.save()
>>> company_list = Company.objects.all()
>>> company_list
>>> c = Company.objects.get(full_name="www.pythontab.com")
>>> c.tel = 23456789
>>> c.save()
 
>>> c = Company.objects.get(full_name="www.pythontab.com")
>>> c.delete()
#删除所有
>>> Company.objects.all().delete()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python求素数示例分享
Feb 16 Python
在Python中使用dict和set方法的教程
Apr 27 Python
Python中使用asyncio 封装文件读写
Sep 11 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
Feb 07 Python
python3+PyQt5实现柱状图
Apr 24 Python
python 删除非空文件夹的实例
Apr 26 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
Python 实现opencv所使用的图片格式与 base64 转换
Jan 09 Python
Python解释器以及PyCharm的安装教程图文详解
Feb 26 Python
python 多线程中join()的作用
Oct 29 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 #Python
​如何愉快地迁移到 Python 3
Apr 28 #Python
python学习开发mock接口
Apr 28 #Python
Python简单基础小程序的实例代码
Apr 28 #Python
python实现Excel文件转换为TXT文件
Apr 28 #Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 #Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 #Python
You might like
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
Python实现的建造者模式示例
2018/08/06 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
公司踏青活动方案
2014/08/16 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
工作经历证明范本
2015/06/15 职场文书
基层党建工作简报
2015/07/21 职场文书