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 相关文章推荐
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
Python实现windows下模拟按键和鼠标点击的方法
Mar 13 Python
Python中最常用的操作列表的几种方法归纳
Apr 24 Python
Python 迭代器工具包【推荐】
May 06 Python
Python中functools模块函数解析
Mar 12 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
CentOS7安装Python3的教程详解
Apr 10 Python
如何在Django配置文件里配置session链接
Aug 06 Python
Python基于numpy模块实现回归预测
May 14 Python
利用Python优雅的登录校园网
Oct 21 Python
浅谈Python数学建模之整数规划
Jun 23 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 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
php入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
Js实现动态添加删除Table行示例
2014/04/14 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
AngularJs定制样式插入到ueditor中的问题小结
2016/08/01 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
Python实现的双色球生成功能示例
2017/12/18 Python
python爬取个性签名的方法
2018/06/17 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
python3中for循环踩过的坑记录
2020/12/14 Python
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
《搭石》教学反思
2016/02/18 职场文书
商业计划书之服装
2019/09/09 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js
Python实现对齐打印 format函数的用法
2022/04/28 Python
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL