django有内置的db.sqlite3数据库;但是有些时候我们需要切换到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导入导出数据的命令完成迁移
确保db.sqlite3数据库在项目总存在;数据源是SQLite。执行以下命令
(mysite_env) D:\PyCharm_WorkSpace\mysite_env\mysite>python manage.py dumpdata > data.json
确保项目中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’;**这是因为数据有重复的。
解决方案: 根据提示找到相应的数据表把重复的数据删掉,然后重新执行导入命令就行。
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配置添加到环境变量。
配置完成后执行以上命令等待导入
在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数据库中