数据库表的创建:

1、Django工程项目建立,基础环境调试。

2、创建表
from django.db import models

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)#定义外键的时候,在创建该表时,数据库自动的会增加_id在其名字后面,即publisher_id
    publication_date = models.DateField()

3、告诉整个项目,激活该model.py文件,在项目setting.py中进行激活:
INSTALLED_APPS = (
    'app.books',
)
4、在shell中验证model代码的正确性,验证无误后,执行代码,将其转换为sql语言:
python manage.py validate
python manage.py sqlall books
validate 命令检查你的模型的语法和逻辑是否正确。 如果一切正常,你会看到 0 errors found 消息。
5、同步到数据库中,syncdb仅仅创建数据库里还没有的表,它 并不 对你数据模型的修改进行同步,也不处理数据模型的删除
python manage.py syncdb
python manage.py migrate
数据库的增删查改:
1、插入记录
p1 = Publisher(name='Apress', address='2855 Telegraph Avenue',
...     city='Berkeley', state_province='CA', country='U.S.A.',
...     website='http://www.apress.com/')
>>> p1.save()

>>> Publisher.objects.filter(id=52).update(name='Apress Publishing')
save()每次都更新所有列,update()则每次更新指定列
2、关键字查询
Publisher.objects.filter(name='Apress')
上面的例子中``
filter()`` 函数返回一个记录集,这个记录集是一个列表。 相对列表来说,有些时候我们更需要获取单个的对象, `` get()``
方法就是在此时使用的:
Publisher.objects.get(name="Apress")
3、数据集合排序
>>>Publisher.objects.order_by("name")
>>> Publisher.objects.order_by("-name") #倒序
4、删除记录
Publisher.objects.filter(country='USA').delete()
执行数据库的SQL命令

1.导入django.db的connection模块,建立与数据库的链接,在之前一定要在settings.py上设置好数据库,并且执行
python manage.py syncdb同步数据库
>>> from django.db import connection
>>> cursor=connection.cursor()
如果不在django框架下,连接数据库的操作为:

import MySQLdb conn=MySQLdb.connect(host="localhost",user="root",passwd="123",db="mydatabase")

cursor=conn.cursor()

2.设置SQL命令:

>>> cursor.execute("""
... SELECT DISTINCT first_name
... FROM books_author
... WHERE last_name = %s""",['miao'])

3.执行命令:

>>> row = cursor.fetchone()

cursor对象用拥有的方法如下:

cursor用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单条sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集
cursor用来接收返回值的方法:
fetchall(self):接收全部的返回结果行.
fetchmany(self,
size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self):返回一条结果行.
scroll(self,
value,
mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果mode='absolute',则表示从结果集的第一
行移动value条.

转载于:https://www.cnblogs.com/weiming-cheng/p/5315430.html

Django:数据库表的建立与增删查改(ForeignKey和ManytoMany)相关推荐

  1. MySQL~数据库表中数据的增删查改(基础篇)

    文章目录 增加 建表 多行数据 全列插入 多行数据 指定列插入 查询 全列查询 指定列查询 查询字段为表达式 查询字段 名字重定义 去重 distinct 排序 order by 条件查询 运算符 比 ...

  2. winform调用webservice增删查改_教你分别用数据库与云函数实现“增删查改”

    导语 数据库 API 与云函数"增删查改"的姿势有何不同?对比代码差异往往有助于更好的理解,本文用详细代码帮你寻找答案并巩固基础! ▌一.云开发初始化 wx.cloud.init( ...

  3. 通过jQuery把数据库里面的数据进行增删查改

    之前我们在数据库里面做过简单的增删查改,这次我们在jQuery里面把数据库映射过来,在jQuery里面做增删查改 数据库映射过来之后,我们则去到我们刚刚新建的LinqSelect的控制器当中去写一个查 ...

  4. MySQL第二讲 - 数据表简单操作 与 “增删查改的开头部分- 增”- 细节狂魔

    文章目录 前文知识点回顾   SQL语句 >>操作指令 (不区分大小写) 1.显示数据库:show databases; 2.创建数据库:create database 数据库名; [如果 ...

  5. mysql工资修改为空_mysql数据库技术1——基本的增删查改的sql语句

    1.数据库语言的分类 DDL:数据库定义语言 data Definition language 用于创建.修改.和删除数据库内的数据结构,如: 1:创建和删除数据库(CREATE DATABASE | ...

  6. sql语言的应用(对数据库,数据表,数据项的增删查改和约束)

    目录 一.SQL数据库 1.SQL介绍 2.DDL-操作数据库 3.DDL-操作数据表 4.DML-INSERT语句 5.DML-UPDATE语句 6.DML-DELETE语句 7.DQL-单表查询 ...

  7. python数据存储系列教程——python中mysql数据库操作:连接、增删查改、指令执行

    全栈工程师开发手册 (作者:陈玓玏) python教程全解 调试环境python3.6,调试python操作mysql数据库,首先要在本地或服务器安装mysql数据库.安装参考:http://blog ...

  8. python数据存储系列教程——python中redis数据库操作:连接、增删查改、多级路径

    全栈工程师开发手册 (作者:陈玓玏) python教程全解 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品 ...

  9. python数据存储系列教程——python中mongodb数据库操作:连接、增删查改、多级路径

    全栈工程师开发手册 (作者:陈玓玏) python教程全解 调试环境python3.6,调试python操作mongodb数据库,首先要在本地或服务器安装mongodb数据库.安装参考:http:// ...

最新文章

  1. core data 学习笔记
  2. ubuntu mysql修改字符集后不能启动mysql_解决ubuntu下修改my.cnf设置字符集导致mysql无法启动...
  3. Xuggler教程:帧捕获和视频创建
  4. 服务器显示不明用户远程过,服务器显示不明用户远程过
  5. mysql limit函数
  6. java服务端开发安全_后端开发:APP与后端交互的安全性
  7. 如何正确 Get 分库分表?
  8. Linux 符号链接与 inode
  9. SSO单点登录之同域登录的实现
  10. 技能竞赛国赛_中西部第一!技能“川军”在第一届全国技能大赛斩获4金5银6铜...
  11. 2017-2018-2 1723《程序设计与数据结构》第三周作业 实验一 总结
  12. Linux网卡驱动教程,linux | 网卡驱动
  13. js 拖拽上传文件及文件夹
  14. ICP(Iterative Closest Point)算法和Umeyama算法
  15. 想转行学IT!0基础应该要学习哪个技术
  16. (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  17. 正则表达式在线测试 | 菜鸟工具
  18. 【面试时最令职场面试官讨厌的十种行为】
  19. Android 8.1 【FriendlyARM】编译环境搭建与镜像烧写
  20. 计算机械结构变形,机械结构设计-力学原理设计准则

热门文章

  1. 【知识库专访】亲加CTO郝飞:直播技术架构解密与优化之道
  2. 深度学习指南:基于Ubuntu从头开始搭建环境
  3. linux通过rinetd工具进行端口映射/转发/重定向
  4. sersync + rsync 实现文件的实时同步
  5. android获取string.xml的值(转)
  6. Linux Unix C 中的curses库——curses.h
  7. 被上海爱立信录取,GL
  8. 死磕 java集合之ConcurrentSkipListMap源码分析——发现个bug
  9. Apache HBase的现状和发展
  10. 通过docker搭建zabbix监控系统