2017-01-07 6 views
2

私は自分のモデルとすべてをDjangoで定義しています。ユーザがアプリケーションから登録している場合、ユーザはデータベースに登録されています。問題は、たくさんのユーザーがいるJSONを含むファイルがあることです。 私はこのファイルを読んで、私のデータベースにすべてのユーザーを挿入できる仕事をしたいと思います。デフォルトのsqlite3データベースにデータを挿入するスクリプトの作成方法django

どのような方法が最適ですか? Djangoを使わずにデータベースに接続するには?

+1

モジュール 'sqlite3'、' sqlalchemy'、 'peewee'を使用できます。または、 'JSON'を' CSV'に変換して、データベースビューア/エディタを使って直接データベースにインポートすることもできます。 JSONからデータを直接インポートできるかどうかはわかりません。 [DB Browser for SQLite](http://sqlitebrowser.org/) – furas

答えて

2

なぜDjangoなしでデータベースに接続したいのですか?私はDjangoを使ってやっていますが、スクリプトを実行できるようにDjangoを初期化する必要があります。このような何かにそれを行う必要があります。

import os, sys 
sys.path.append('/path/to/django/project') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'project_name.settings' 
import django 
django.setup() 
from django.contrib.auth.models import User 

for row in data: 
    user = User.objects.create_user(username=row['username']) 

/path/to/django/project設定を含むディレクトリがあるフォルダへのパスです。たとえば、階層:

/projects/my_project 
/projects/my_project/my_app 
/projects/my_project/my_project/setting.py 

の場合は、/projects/my_projectを追加する必要があります。

Djangoのビューを経由せずにデータを挿入したい場合は

from app_name.models import ModelName 
+0

その仕事をどこに置くかわからないので、フォルダがあるので プロジェクトに含まれているプロジェクト:django_project(ここで私のappと自分の設定)とフォルダジョブ(私が自分のすべての仕事、クローラ、物事をデータベースに与える場所) – mel

+0

上記のコードでは、スクリプト内のDjango環境を明示的に初期化するので、スクリプトがどこにあるかは関係ありません。必要なら、jobs-folderに置くことができます。 – skoll

+0

"/ path/to/django/project"このパスは、自分のデータベースを設定するsettings.pyで終わる必要がありますか? – mel

1

を行う代わりに、代わりに

from django.contrib.auth.models import User 

のカスタムモデルで作業する必要がありますジャンゴUserモデルの場合は、使用シェル

あなたのアプリのディレクトリにpython manage.py shellを実行してください。

次に、Pythonのjson.loads()を介してJSONデータをインポートし、データの作成と保存のモデルをループします。

bulk_createを使用してモデルを作成することもできます。

YourCustomUserModel.objects.bulk_create([ 
    YourCustomUserModel(username=datarow.username) 
    for datarow in data 
]) 
関連する問題