最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • django如何创建数据库连接

    正文概述    2020-07-10   267

    django如何创建数据库连接

    Django链接数据库,首先在settings.py文件中进行配置。

    首先需要在 DATABASES 中进行配置,代码如下:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '[database_name]',
            'USER': '[username]',
            'PASSWORD': '[password]',
            'HOST': '127.0.0.1',
            'PORT': '3306',
        }
    }

    注意第一个ENGINE字段需要进行修改,刚创建时默认为sqlite,由于我使用了mysql所以把它修改为如上所示,另外Django还支持许多别的数据库,可以在External Libraries -> Lib -> site-packages -> django -> db -> backends中查看。第二个字段如果使用了mysql,就只需要把使用的数据库的名字写进去,而不需要像sqlite那样写路径。

    还需要在INSTALLED_APPS 中进行配置,把自己创建的app添加到列表中,这里假设app的名字叫book,则示例代码如下:

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        #以上是默认的
        'book',
    ]

    使用Django操作数据库

    使用原生的sql语句

    在 Django 中使用原生 sql 语句操作其实就是使用 python db api 的接口来操作。需要先安装pymysql或者 mysqlclient,这两者都可以驱动mysql的操作,区别是pymysql是纯python实现的,可以和python无缝衔接,mysqlclient底层是用C语言实现的,效率更高,也支持python3。

    使用Django操作数据库需要从django.db中导入connection来获取游标,代码如下:

    from django.db import connection
    def get_cursor():
        return connection.cursor()

    cursor比较常用的操作有execute()和fetchall()/fetchone(),execute()中写入sql语句,可以进行增删改查操作,fetchall()/fetchone()用在cursor.execute("select xxx")语句之后,可以给对象赋值查询的结果,示例代码如下:

    from django.shortcuts import render
    from django.db import connection
    def index(request):
        cursor = get_cursor()
        cursor.execute("select id,name,author from book")
        books = cursor.fetchall()
        return render(request, 'index.html', context={'books': books})

    使用ORM模型

    ORM 模型一般都是放在 app 的 models.py 文件中。每个 app 都可以拥有自己的模型,并且如果这个模型想要映射到数据库中,那么这个 app 必须要放在 settings.py 的 INSTALLED_APP 中进行安装。示例代码如下:

    from django.db import models
    class Book(models.Model):
        id = models.AutoField(primary_key=True)
        name = models.CharField(max_length=100, null=False)
        author = models.CharField(max_length=100, null=False)
        price = models.FloatField(null=False, default=0)

    以上便定义了一个模型。这个模型继承自 django.db.models.Model ,如果这个模型想要映射到数据库中,就必须继承自这个类。这个模型以后映射到数据库中,表名是模型名称的小写形式,为 book_book ,第一个 book 是app的名字,第二个 book 是类的名字。

    之后我们在命令行中执行下面的两条命令,就可以把模型映射到数据库中,第一条命令是生成迁移脚本文件,第二条命令是执行脚本文件:

    python manage.py makemigrations
    python manage.py migrate

    需要注意的是,在 django 中,如果一个模型没有定义主键,那么将会自动生成一个自动增长的 int 类型的主键,并且这个主键的名字就叫做 id 因此其实上面Book类中的第一条语句写与不写效果是一样的。下面的代码声明了一个 Publisher 类,没有写字段id的语句,但是 django 会自动实现这一功能,代码如下:

    class Publisher(models.Model):
        name = models.CharField(max_length=100, null=False)
        address = models.CharField(max_length=100, null=False)

    之后在执行一次

    python manage.py makemigrations
    python manage.py migrate

    django 就会自动把进行添加或者修改的类进行映射,非常方便。


    起源地下载网 » django如何创建数据库连接

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元