首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2019新年第一篇:SQLite的优缺点及Django配置MySQL数据库

休息了一个月,小编我又回来了。在这个月里我也一直在思考这个公众号的未来,到底是为迎合大众做高频率更新,还是迎合自己,业余时间不定期写些Python和Django Web开发的原创技术总结。因为前者会对工作和家人时间形成巨大的占用,小编最终选择了后者,至少可以让这个公众号持续下去。希望得到大家继续支持啊。言归正传,今天小编我就带你看下为什么哪些Django项目中不建议使用自带的SQLite数据库及如何配置使用MySQL数据库。

SQLite的应用场景及优缺点

SQLite是一个轻量级的开源免费的数据库。它是一种嵌入式数据库,只是一个.db格式的文件,无需安装,配置和启动。SQLite试图为单独的应用程序和设备提供本地的数据存储。SQLite常见应用场景包括中小型网站,嵌入式设备和应用软件(如android),文件档案管理和桌面程序(exe)文件数据库。SQLite支持多种编程语言(如python)和操作系统(windows, iOS, unix, linux),移植性非常好。

SQLite不适用以下场景:

客户端/服务器程序

如果你有许多的客户端程序要通过网络访问一个共享的数据库, 你应当考虑用一个客户端/服务器数据库来替代SQLite。 SQLite可以通过网络文件系统工作, 但是因为和大多数网络文件系统都存在延时, 因此执行效率很差。

高流量网站

SQLite通常情况下用作一个中小型网站(日访问次数少于10万)的后台数据库是完全可以胜任的,请不用担心。 但是如果你的网站的访问量大到你开始考虑采取分布式的数据库部署, 那么你应当毫不犹豫的考虑用一个企业级的客户端/服务器数据库来替代SQLite。

超大的数据集

当你在SQLite中开始一个事务处理的时候, 数据库引擎将不得不分配一小块内存(文件缓冲页面)来帮助它自己管理回滚操作。每1MB的数据库文件SQLite需要256字节。对于小型的数据库这些空间不算什么, 但是当数据库增长到数十亿字节的时候, 缓冲页面的尺寸就会相当的大了. 如果你需要存储或修改几十GB的数据, 你应该考虑用其他的数据库引擎。

高并发访问

SQLite对于整个数据库文件进行读取/写入锁定, 这意味着如果任何进程读取了数据库中的某一部分, 其他所有进程都不能再对该数据库的任何部分进行写入操作。 同样的, 如果任何一个进程在对数据库进行写入操作, 其他所有进程都不能再读取该数据库的任何部分。对于大多数情况这不算是什么问题, 在这些情况下每个程序使用数据库的时间都很短暂, 并且不会独占, 这样锁定至多会存在十几毫秒。但是如果有些程序需要高并发, 那么这些程序就需要寻找其他的解决方案了。

为什么使用MySQL

如果你需要开发一个高流量或高并发的网站,SQLite将不能满足你的需求。同时,如果你要开发一个Web APP, 不同用户通过网络对数据库进行读写操作,那么SQLite也将不能胜任(比如分布式数据库)。这时我们需要考虑企业级的专业数据库了,比如MySQL。MySQL是最流行的开源免费的关系型数据库,可作为客户端/服务器数据库提供企业级的数据库服务。

Django项目中如何配置使用MySQL

对于Django新手,你刚开始可以不使用MySQL数据库,但一定要学会如何配置使用MySQL。Django项目中配置使用MySQL一共分四步: 安装MySQL, 创建数据库名和用户名,通过pip安装第三方库pymysql和修改配置文件settings.py。

第一步 按装MySQL

Windows用户可以直接从MySQL网站上下载相应版本安装。Linux用户可以使用如下命令安装mysql-server。

sudoapt-get install mysql-server

第二步 创建数据库名和用户

打开MySQL终端,输入以下命令先创建数据库和用户,并给创建的用户授权。数据库名字,用户名和密码待会会用到。第一步和第二步非常重要。myapp.*表示授权操作myapp中所有的表。

CREATE DATABASEmyappcharset=utf8

CREATE USER'username'@'localhost'IDENTIFIED BY'password'

GRANT ALL PRIVILEGES ONmyapp.*TO'username'@'localhost'IDENTIFIED BY'password'

第三步安装第三方库pymysql

需要借助于第三方库比如pymysql, Django才能直接访问MySQL数据库。进入虚拟环境(venv)后使用

如下命令安装pymysql。

pip install pymysql

然后在项目文件夹的__init__.py中文件中写入如下两行代码:

import pymysql

pymysql.install_as_MySQLdb()

第四步修改数据库配置文件

修改项目文件夹里的settings.py的文件,添加创建的数据库和用户信息。

DATABASES = {

'default': {

'NAME': 'myapp', # 你要存储数据的库名,事先要创建。

'USER': 'root', # 数据库用户名

'PASSWORD': '1234', # 密码

'HOST': 'localhost', # 默认主机

'PORT': '3306', # 数据库使用的端口

}

}

创建一个简单模型,使用如下命令,如果没有出现错误,那么恭喜你已经在Django项目中使用MySQL数据库啦。

python manage.py makemigrations

python manage.py migrate

小结

本文总结了Django自带数据库SQLite的应用场景和优缺点,并详细介绍了Django项目中如何配置使用MySQL数据库,喜欢就收藏吧。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190103G0FNBX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券