GVKun编程网logo

将Django DB从SQLite迁移到MySQL的最佳方法是什么?(django导入mysql)

15

以上就是给各位分享将DjangoDB从SQLite迁移到MySQL的最佳方法是什么?,其中也会对django导入mysql进行解释,同时本文还将给你拓展django1.9.5sqlite3迁移数据到m

以上就是给各位分享将Django DB从SQLite迁移到MySQL的最佳方法是什么?,其中也会对django导入mysql进行解释,同时本文还将给你拓展django1.9.5 sqlite3迁移数据到mysql(外键迁移没有问题)、django中sqlite迁移mysql、Django:将项目从sqlite迁移到PostgreSQL的最佳实践是什么、Mysql应用sqlite迁移到mysql脚本的方法等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

将Django DB从SQLite迁移到MySQL的最佳方法是什么?(django导入mysql)

将Django DB从SQLite迁移到MySQL的最佳方法是什么?(django导入mysql)

我需要将数据库从sqlite迁移到mysql,并且各种工具/脚本对我来说太多了,无法轻松找到最安全,最优雅的解决方案。

在我看来,这看起来不错http://djangosnippets.org/snippets/14/,但距获取更新令人担忧,似乎已经过去了三年。

您是否可以推荐一个在Django 1.1.1上可靠的解决方案?

答案1

小编典典

执行:

python manage.py dumpdata > datadump.json

接下来,将你的settings.py更改为mysql数据库。

最后:

python manage.py loaddata datadump.json

django1.9.5 sqlite3迁移数据到mysql(外键迁移没有问题)

django1.9.5 sqlite3迁移数据到mysql(外键迁移没有问题)

# 创建mysql数据库

CREATE DATABASE db_name CHARACTER SET utf8 COLLATE utf8_general_ci;

# 切换default 数据库到sqlite3

# 导出salite3中的数据到sqlite3_all.json

python3 manage.py dumpdata > sqlite3_all.json

# 切换 django settings 中默认数据库到 mysql

# 删除django 所有app原来基于sqlite3创建的migrations,并执行下面操作

python3 manage.py makemigrations

python3 manage.py migrate

# 执行下面的命令将数据导入到mysql数据库中去

python3 manage.py loaddata sqlite3_all.json

 

django中sqlite迁移mysql

django中sqlite迁移mysql

sqlite数据迁移

1 数据备份

django中打开terminal
python manage.py dumpdata authorization > authorization_data.json

2 表结构同步


django中创建mysql数据库并更新配置settings
创建slave数据库
迁移数据库表
python manage.py migrate --run-syncdb --database slave  #syncdb 同步数据库

 

DATABASES = {
    ''default'': {
        ''ENGINE'': ''django.db.backends.sqlite3'',
        ''NAME'': os.path.join(BASE_DIR, ''db.sqlite3''),
    },
    ''slave'': { #slave备用数据库
        ''ENGINE'': ''django.db.backends.mysql'',
        ''NAME'': ''backend'',
        ''USER'': ''root'',
        ''PASSWORD'': ''Jarvis.123456'',
        ''HOST'': ''localhost'',
        ''PORT'': ''3306''
    }
}

  

导入数据:python manage.py loaddata authorization_data.json

 

#init中添加导入
import pymysql
pymysql.install_as_MySQLdb()

#先建数据库,setting中配置
DATABASES = {
''slave'': {
''ENGINE'': ''django.db.backends.mysql'',
''NAME'': ''xxx'',
''USER'': ''root'',
''PASSWORD'': ''123'',
''HOST'': ''127.0.0.1'',
''PORT'': 3306
}
}

3 数据迁移


setting中配置设置只默认mysql,去掉slave
python manage.py loaddata authorization_data.json

 

diango-模型变更makemigration,migrate

model--用户层面

makemigration--django层面

migrate--db层面

Django:将项目从sqlite迁移到PostgreSQL的最佳实践是什么

Django:将项目从sqlite迁移到PostgreSQL的最佳实践是什么

我需要将一个复杂的项目从sqlite迁移到PostgreSQL。很多人似乎对外键,数据截断等存在问题。

  • 有全自动的工具吗?
  • 迁移之前是否需要检查一些数据或架构?

答案1

小编典典

我的经验,从SQL转储和还原无法正常工作。

你应该遵循以下顺序:

1.将数据库内容转储到json

$ ./manage.py dumpdata > dump.json

2.在settings.py中切换后端

DATABASES = {    # COMMENT OUT:    # ''default'': dj_database_url.config(default=''sqlite:////full/path/to/your/database/file.sqlite''),    # ADD THIS INSTEAD:    ''default'': dj_database_url.config(default=''postgres://localhost:5432/postgres_db_name''),}
  1. Syncdb并将新数据库迁移到相同的表结构
$ ./manage.py syncdb$ ./manage.py migrate

4.将json加载到新数据库。

$ ./manage.py loaddata dump.json

5.恭喜!现在,新数据在你的postgres数据库中。

Mysql应用sqlite迁移到mysql脚本的方法

Mysql应用sqlite迁移到mysql脚本的方法

《MysqL应用sqlite迁移到MysqL脚本的方法》要点:
本文介绍了MysqL应用sqlite迁移到MysqL脚本的方法,希望对您有用。如果有疑问,可以联系我们。

废话不多说了,直接给大家贴代码了,具体代码如下所示:MysqL教程

#! /usr/bin/perl
#
# based on https://stackoverflow.com/a/87531/5742651
# usage: sqlite3 .dump database_name.sqlite3 | perl sqlite2MysqL.pl | MysqL -u root -p $import_database_name
#
# ignore follow lines:
#  BEGIN TRANSACTION 
#  COMMIT 
#  sqlite_sequence 
#  CREATE UNIQUE INDEX
#  PRAGMA foreign_keys=OFF
# "tablename/field" => `tablename/field`
# booleans 't' and 'f' => 1 and 0
# AUTOINCREMENT => AUTO_INCREMENT
# varchar => varchar(255)
# CREATE TABLE table... => DROP TABLE table; CREATE TABLE table...
# Merge insert sqls into multiple insert to speed up
#  INSERT INTO table VALUES('val1');
#  INSERT INTO table VALUES('val2');  => INSERT INTO table VALUES('val1'),('val2'),('val3');
#  INSERT INTO table VALUES('val3');
my $open=0;
my $line_cache = '';
# For speed up
print "SET GLOBAL max_allowed_packet=209715200;\n";
#print "SET AUTOCOMMIT=0;\n";
while ($line = <>){
  if (($line !~ /PRAGMA foreign_keys=OFF/) && ($line !~ /BEGIN TRANSACTION/) && ($line !~ /COMMIT/) && ($line !~ /sqlite_sequence/) && ($line !~ /CREATE UNIQUE INDEX/)){
   if ($line =~ /CREATE TABLE \"([a-z_0-9]*)\"(.*)/){
   $name = "\`$1\`";
   $sub = $2;
   $sub =~ s/varchar([^(])/varchar(255)$1/g;
   $line = "DROP TABLE IF EXISTS $name;\nCREATE TABLE $name$sub\n"; 
   }
   elsif ($line =~ /CREATE VIEW ([a-z_0-9]*)(.*)/){
   $name = "\`$1\`";
   $sub = $2;
   $line = "DROP VIEW IF EXISTS $name;\nCREATE VIEW $name$sub\n";
   }
   elsif ($line =~ /INSERT INTO \"([a-z_]*)\" VALUES(.*);/){
        if ($open == 0) {
          $open = 1;
       $line_cache .= "INSERT INTO \`$1\` VALUES $2";
        } else {
          $line_cache .= ",$2";
        }
        next;
   }else{
   $line =~ s/\'\'/\\\'/g;
   }
    if ($open == 1) {
       $open = 0;
       $line = $line_cache.";\n".$line;
       $line_cache = '';
    }
   $line =~ s/\"/`/g;
   $line =~ s/([^\\'])\'t\'(.)/$1THIS_IS_TRUE$2/g;
   $line =~ s/THIS_IS_TRUE/1/g;
   $line =~ s/([^\\'])\'f\'(.)/$1THIS_IS_FALSE$2/g;
   $line =~ s/THIS_IS_FALSE/0/g;
   $line =~ s/AUTOINCREMENT/AUTO_INCREMENT/g;
   print $line;
  }
}
#print "SET AUTOCOMMIT=1;\n";

总结MysqL教程

以上所述是小编给大家介绍的sqlite迁移到MysqL脚本的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对小编PHP网站的支持!MysqL教程

今天关于将Django DB从SQLite迁移到MySQL的最佳方法是什么?django导入mysql的介绍到此结束,谢谢您的阅读,有关django1.9.5 sqlite3迁移数据到mysql(外键迁移没有问题)、django中sqlite迁移mysql、Django:将项目从sqlite迁移到PostgreSQL的最佳实践是什么、Mysql应用sqlite迁移到mysql脚本的方法等更多相关知识的信息可以在本站进行查询。

本文标签: