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中pygame模块用法实例
Oct 09 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
Feb 18 Python
基于wxpython实现的windows GUI程序实例
May 30 Python
Python编程中对文件和存储器的读写示例
Jan 25 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
Jun 03 Python
python3实现磁盘空间监控
Jun 21 Python
python如何从文件读取数据及解析
Sep 19 Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
Jan 27 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 Python
Python软件包安装的三种常见方法
Jul 07 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自动更新新闻DIY
2006/10/09 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
常用一些Javascript判断函数
2012/08/14 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
javascript基本算法汇总
2016/03/09 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
javascript cookie的基本操作(添加和删除)
2017/07/24 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python重试装饰器示例
2014/02/11 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
中医专业应届生求职信
2013/11/17 职场文书
自荐书格式
2013/12/01 职场文书
书法培训心得体会
2014/01/05 职场文书
一年级班主任寄语
2014/01/19 职场文书
服务之星获奖感言
2014/01/21 职场文书
婚礼司仪主持词
2014/03/14 职场文书
地球一小时倡议书
2014/04/15 职场文书
2014年纪委工作总结
2014/12/05 职场文书
新手入门Jvm-- JVM对象创建与内存分配机制
2021/06/18 Java/Android