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计算最小优先级队列代码分享
Dec 18 Python
简单了解Python下用于监视文件系统的pyinotify包
Nov 13 Python
Python基础之getpass模块详细介绍
Aug 10 Python
Python内置函数 next的具体使用方法
Nov 24 Python
Python3实现的反转单链表算法示例
Mar 08 Python
python pytest进阶之xunit fixture详解
Jun 27 Python
Python小程序之在图片上加入数字的代码
Nov 26 Python
python3中numpy函数tile的用法详解
Dec 04 Python
sklearn-SVC实现与类参数详解
Dec 10 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 Python
Python使用MapReduce进行简单的销售统计
Apr 22 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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
PHP静态新闻列表自动生成代码
2007/06/14 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
详解PHP+AJAX无刷新分页实现方法
2015/11/03 PHP
PHP后端银联支付及退款实例代码
2017/06/23 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
javascript中new关键字详解
2015/12/14 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
微信小程序 跳转方式总结
2017/04/20 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
Python基于whois模块简单识别网站域名及所有者的方法
2018/04/23 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
《晚上的太阳》教学反思
2014/04/23 职场文书
爱护公共设施标语
2014/06/24 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
公司离职证明标准范本
2014/10/05 职场文书
小学英语课教学反思
2016/02/15 职场文书
导游词之韩国济州岛
2019/10/28 职场文书
Nginx反向代理配置的全过程记录
2021/06/22 Servers
PyTorch device与cuda.device用法
2022/04/03 Python