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之再深点,更懂list
Sep 20 Python
Python实现获取命令行输出结果的方法
Jun 10 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
pandas groupby 分组取每组的前几行记录方法
Apr 20 Python
对Python3中的input函数详解
Apr 22 Python
Python基于pandas实现json格式转换成dataframe的方法
Jun 22 Python
Python高斯消除矩阵
Jan 02 Python
Python 导入文件过程图解
Oct 15 Python
Python迭代器模块itertools使用原理解析
Dec 11 Python
Django如何实现密码错误报错提醒
Sep 04 Python
详解tensorflow之过拟合问题实战
Nov 01 Python
在python中实现导入一个需要传参的模块
May 12 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 Undefined index和Undefined variable的解决方法
2008/03/27 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
python类中super()和__init__()的区别
2016/10/18 Python
Python 专题四 文件基础知识
2017/03/20 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
python方向键控制上下左右代码
2018/01/20 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
python中的不可变数据类型与可变数据类型详解
2018/09/16 Python
python截取两个单词之间的内容方法
2018/12/25 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
Julep官网:美容产品和指甲油
2017/02/25 全球购物
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
廉政承诺书范文
2015/04/28 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
java executor包参数处理功能 
2022/02/15 Java/Android
python字符串的一些常见实用操作
2022/04/06 Python