当前位置: 首页 > news >正文

django把SQLite数据库的数据导入到MySQL数据库中

一、把SQLite数据库中的数据导入到MySQL数据库中

django有内置的db.sqlite3数据库;但是有些时候我们需要切换到mysql数据库

切换mysql数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',   # mysql 驱动
        'NAME': 'mysite_db',		# 数据库名
        'USER': 'tengxt',			# 用户名
        'PASSWORD': 'tengxt123456',	# 密码
        'HOST': 'localhost',		# 访问的地址(localhost|127.0.0.1|'') 都代表本机
        'PORT': '3306',				# 端口号 mysql默认端口是3306
    }
}
迁移数据

因为很多时候,最初使用的是SQLite数据库,但后面想把SQLite数据库中的数据迁移到mysql数据库。可以使用Django导入导出数据的命令完成迁移

导出SQLite数据库

确保db.sqlite3数据库在项目总存在;数据源是SQLite。执行以下命令

(mysite_env) D:\PyCharm_WorkSpace\mysite_env\mysite>python manage.py dumpdata > data.json
导入Mysql数据库

确保项目中data.json存在;把数据源切换成Mysql。执行命令

(mysite_env) D:\PyCharm_WorkSpace\mysite_env\mysite>python manage.py loaddata data.json
 # 导入成功   
Installed 336 object(s) from 1 fixture(s)

如果导入时报 **1062. “Duplicate entry ‘xxxx’ for key ‘xxx_uniq’;**这是因为数据有重复的。

解决方案: 根据提示找到相应的数据表把重复的数据删掉,然后重新执行导入命令就行。

mysql时区设置

Django官网msyql时区配置

Time zone definitions¶
# 把 mysql_tzinfo_to_sql时区表加载到MySQL数据库中
If you plan on using Django's timezone support, use mysql_tzinfo_to_sql to load time zone tables into the MySQL database. This needs to be done just once for your MySQL server, not per database.

下载mysql_tzinfo_to_sql时区表的地址:https://dev.mysql.com/downloads/timezones.html;

下载对应着自己MySQL数据库版本的时区表就行;下载完成后

timezone_posix.sql文件添加到MySQL中

# 在mysql_tzinfo_to_sql文件夹下执行以下命令
D:\studying\python\timezone_2018g_posix_sql>mysql -u root -p mysql < timezone_posix.sql
Enter password: ******

D:\studying\python\timezone_2018g_posix_sql>

如果出现mysql不是内部命令的提示,这是因为没把mysql配置添加到环境变量。

配置完成后执行以上命令等待导入

二、django设置缓存数据库

在settings.py文件中添加缓存(cache)配置

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'my_cache_table',
    }
}

创建缓存表

python manage.py createcachetable

实现基于数据库的缓存

from django.core.cache import cache
# 获取七天热门博客的缓存数据
	hot_blogs_for_seven_days = cache.get('hot_blogs_for_seven_days')
	if hot_blogs_for_seven_days is None:
		hot_blogs_for_seven_days = get_seven_days_hot_blogs()
		cache.set('hot_blogs_for_seven_days', hot_blogs_for_seven_days, 3600)
		print('hot_blogs_for_seven_days---> calc')
	else:
		print('hot_blogs_for_seven_days---> use cache')

我的博客地址:django把SQLite数据库的数据导入到MySQL数据库中

相关文章:

  • 采用Nginx+uWSGI部署Django项目
  • Hexo Next主题中集成gitalk评论系统
  • Django对符合条件的值求和和分组求和(aggregate)
  • navicat 连接远程数据库,出现2013错误并完美解决
  • Windows 10的中文用户名怎么改成英文?
  • VirtualBox安装Centos7
  • CentOS 7 开启ssh服务
  • jquery之弹框
  • Python3.7上安装Django1.11启动报错
  • Curler 超简单免费网站监测工具,30秒轻松完成相关设定
  • Jquery实现简单的点击展开和收起
  • CenOS 7下安装jdk 8
  • CentOS 7 上安装Nginx
  • Intellij IDEA 2018用快捷键自动生成序列化id
  • Vue packags version mismatch
  • chrome扩展demo1-小时钟
  • ECMAScript入门(七)--Module语法
  • HTTP中GET与POST的区别 99%的错误认识
  • iOS 系统授权开发
  • Javascript基础之Array数组API
  • Js基础——数据类型之Null和Undefined
  • Node + FFmpeg 实现Canvas动画导出视频
  • Ruby 2.x 源代码分析:扩展 概述
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 前端技术周刊 2019-02-11 Serverless
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 如何正确理解,内页权重高于首页?
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • #{}和${}的区别?
  • #if和#ifdef区别
  • #QT(TCP网络编程-服务端)
  • (JS基础)String 类型
  • (LeetCode) T14. Longest Common Prefix
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (vue)页面文件上传获取:action地址
  • (二十三)Flask之高频面试点
  • (二十四)Flask之flask-session组件
  • (四)库存超卖案例实战——优化redis分布式锁
  • (算法)求1到1亿间的质数或素数
  • (一)Thymeleaf用法——Thymeleaf简介
  • (一)基于IDEA的JAVA基础10
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • .htaccess配置重写url引擎
  • .NET Core中Emit的使用
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NetCore 如何动态路由
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .net访问oracle数据库性能问题
  • .NET开源快速、强大、免费的电子表格组件
  • @AutoConfigurationPackage的使用
  • [ARC066F]Contest with Drinks Hard
  • [Enterprise Library]调用Enterprise Library时出现的错误事件之关闭办法