前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >模型基本使用

模型基本使用

作者头像
星哥玩云
发布2022-09-14 17:24:53
2160
发布2022-09-14 17:24:53
举报
文章被收录于专栏:开源部署

一、配置django数据库

默认使用的是sqlite数据库

  1. 配置sqlite数据库代码为
代码语言:javascript
复制
DATABASES = {
    <span class="hljs-string">'default'</span>: {
        <span class="hljs-string">'ENGINE'</span>: <span class="hljs-string">'django.db.backends.sqlite3'</span>, <span class="hljs-comment"># 选择数据库引擎</span>
        <span class="hljs-string">'NAME'</span>: os.path.join(BASE_DIR, <span class="hljs-string">'db.sqlite3'</span>), <span class="hljs-comment"># 创建sqlite数据库文件位置</span>
    }
}
  1. 配置mysql数据库
代码语言:javascript
复制
DATABASES = {
    <span class="hljs-string">'default'</span>: {
        <span class="hljs-string">'ENGINE'</span>: <span class="hljs-string">'django.db.backends.mysql'</span>, <span class="hljs-comment"># 选择数据库引擎</span>
        <span class="hljs-string">'NAME'</span>: <span class="hljs-string">'lucky'</span>, <span class="hljs-comment">#数据库名称</span>
        <span class="hljs-string">'HOST'</span>: <span class="hljs-string">'127.0.0.1'</span>, <span class="hljs-comment">#主机</span>
        <span class="hljs-string">'USER'</span>: <span class="hljs-string">'lucky'</span>, <span class="hljs-comment">#用户名</span>
        <span class="hljs-string">'PASSWORD'</span>: <span class="hljs-string">'123456'</span>, <span class="hljs-comment">#密码</span>
        <span class="hljs-string">'PORT'</span>: <span class="hljs-number">3306</span>, <span class="hljs-comment">#端口</span>
    }
}

安装pymysql扩展库

代码语言:javascript
复制
pip3 install pymysql

在project的init.py文件中 添加如下代码

代码语言:javascript
复制
<span class="hljs-keyword">import</span> pymysql
pymysql.install_as_MySQLdb()

python3.x使用的是pymysql模块,所以需要在project/__init.py文件中添加如上代码

二、表分析

需求: 创建用户表

  1. 一个用户表所需字段 用户名 密码 性别 年龄 个人简介 头像 是否删除 创建时间
  2. 创建模型代码位置 App->models.py
  3. 模型、属性、表之间的关联 一个模型类 对应数据库中的一张表 一个类属性 对应 表中的一个字段
  4. 创建用户表模型
代码语言:javascript
复制
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span><span class="hljs-params">(models.Model)</span>:</span>
    username = models.CharField(max_length=<span class="hljs-number">20</span>) <span class="hljs-comment"># 用户名  最大长度20</span>
    password = models.CharField(max_length=<span class="hljs-number">64</span>) <span class="hljs-comment"># 用户密码 最大长度 64</span>
    sex = models.BooleanField(default=<span class="hljs-keyword">True</span>) <span class="hljs-comment"># 性别 默认为True</span>
    age = models.IntegerField(default=<span class="hljs-number">20</span>) <span class="hljs-comment"># 年龄 默认20岁</span>
    info = models.CharField(max_length=<span class="hljs-number">100</span>,default=<span class="hljs-string">'info'</span>) <span class="hljs-comment"># 个人简介 最大长度100 默认为info</span>
    icon = models.CharField(max_length=<span class="hljs-number">60</span>,default=<span class="hljs-string">'default.jpg'</span>) <span class="hljs-comment"># 头像 最大长度为60 默认为 default.jpg</span>
    isDelete = models.BooleanField(default=<span class="hljs-keyword">False</span>) <span class="hljs-comment"># 是否删除 默认不删除</span>
    createTime = models.DateTimeField(auto_now_add=<span class="hljs-keyword">True</span>) <span class="hljs-comment"># 创建时间 默认为添加数据的时间</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">str</span><span class="hljs-params">(self)</span>:</span>  <span class="hljs-comment"># 打印时友好的输出展示</span>
        <span class="hljs-keyword">return</span> self.username
    <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Meta</span>:</span>
        db_table = <span class="hljs-string">'user'</span> <span class="hljs-comment"># 当前表名(如果不写 默认为应用名称+模型名称)</span>

三、生成数据表

修改DJango原码(注意2.2版本需要此操作)

sudo vim /usr/local/lib/python3.7/dist-packages/django/db/backends/mysql/base.py

代码语言:javascript
复制
version = Database.version_info
<span class="hljs-keyword">if</span> version &lt; (<span class="hljs-number">1</span>, <span class="hljs-number">3</span>, <span class="hljs-number">13</span>):
    <span class="hljs-keyword">raise</span> ImproperlyConfigured(<span class="hljs-string">'mysqlclient 1.3.13 or newer is required; you have %s.'</span> % Database.__version__)

更改为:

代码语言:javascript
复制
version = Database.version_info
<span class="hljs-comment"># if version &lt; (1, 3, 13):</span>
<span class="hljs-comment">#     raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)</span>

sudo vim /usr/local/lib/python3.7/dist-packages/django/db/backends/mysql/operations.py

代码语言:javascript
复制
query = getattr(cursor, <span class="hljs-string">'_executed'</span>, <span class="hljs-keyword">None</span>)
<span class="hljs-keyword">if</span> query <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> <span class="hljs-keyword">None</span>:
  query = query.decode(errors=<span class="hljs-string">'replace'</span>)
  <span class="hljs-keyword">return</span> query

更改为:

代码语言:javascript
复制
query = getattr(cursor, <span class="hljs-string">'_executed'</span>, <span class="hljs-keyword">None</span>)
<span class="hljs-keyword">if</span> query <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> <span class="hljs-keyword">None</span>:
  query = query.encode(errors=<span class="hljs-string">'replace'</span>)
  <span class="hljs-keyword">return</span> query

生成迁移文件

代码语言:javascript
复制
python manage.py makemigrations

在’应用目录/migrations’下生成迁移文件 此刻还没有同步到数据库

  1. 执行迁移
代码语言:javascript
复制
python  manage.py  migrate

使用迁移文件在数据库中生成对应的数据表 此刻数据库中已经存在我们的用户表

屏幕快照 20191216 下午5.01.13.png
屏幕快照 20191216 下午5.01.13.png

四、测试数据库

  1. 进入到python shell进行测试 python manage.py shell
  2. 倒包
代码语言:javascript
复制
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> App.models <span class="hljs-keyword">import</span> User
  1. 添加数据
代码语言:javascript
复制
<span class="hljs-meta">&gt;&gt;&gt; </span>u = User()  <span class="hljs-comment"># 实例化User模型类</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.username = <span class="hljs-string">'lucky'</span> <span class="hljs-comment"># 添加用户名</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.password = <span class="hljs-number">123456</span>  <span class="hljs-comment"># 添加密码</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.sex = <span class="hljs-keyword">True</span> <span class="hljs-comment"># 添加性别</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.age = <span class="hljs-number">18</span> <span class="hljs-comment"># 添加年龄</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.info = <span class="hljs-string">'lucky是一个帅气的boy'</span> <span class="hljs-comment"># 添加个人简介</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.save() <span class="hljs-comment"># 进行保存</span>
  1. 查询数据
代码语言:javascript
复制
<span class="hljs-meta">&gt;&gt;&gt; </span>u = User.objects.get(pk=<span class="hljs-number">1</span>) <span class="hljs-comment"># 查询主键为1的用户对象</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u
<span class="hljs-meta">&gt;&gt;&gt; </span>u.username
  1. 修改
代码语言:javascript
复制
<span class="hljs-meta">&gt;&gt;&gt; </span>u = User.objects.get(pk=<span class="hljs-number">1</span>)  <span class="hljs-comment"># 查询主键为1的用户对象</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.username = <span class="hljs-string">'帅气的lucky'</span> <span class="hljs-comment"># 修改用户名为帅气的lucky</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.save() <span class="hljs-comment"># 进行保存</span>
  1. 删除
代码语言:javascript
复制
<span class="hljs-meta">&gt;&gt;&gt; </span>u = User.objects.get(pk=<span class="hljs-number">1</span>) <span class="hljs-comment"># 查询主键为1的用户对象</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.delete() <span class="hljs-comment"># 进行删除</span>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、配置django数据库
  • 二、表分析
  • 三、生成数据表
  • 四、测试数据库
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档