私は自分のモデルとすべてをDjangoで定義しています。ユーザがアプリケーションから登録している場合、ユーザはデータベースに登録されています。問題は、たくさんのユーザーがいるJSONを含むファイルがあることです。 私はこのファイルを読んで、私のデータベースにすべてのユーザーを挿入できる仕事をしたいと思います。デフォルトのsqlite3データベースにデータを挿入するスクリプトの作成方法django
どのような方法が最適ですか? Djangoを使わずにデータベースに接続するには?
私は自分のモデルとすべてをDjangoで定義しています。ユーザがアプリケーションから登録している場合、ユーザはデータベースに登録されています。問題は、たくさんのユーザーがいるJSONを含むファイルがあることです。 私はこのファイルを読んで、私のデータベースにすべてのユーザーを挿入できる仕事をしたいと思います。デフォルトのsqlite3データベースにデータを挿入するスクリプトの作成方法django
どのような方法が最適ですか? Djangoを使わずにデータベースに接続するには?
なぜ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
その仕事をどこに置くかわからないので、フォルダがあるので プロジェクトに含まれているプロジェクト:django_project(ここで私のappと自分の設定)とフォルダジョブ(私が自分のすべての仕事、クローラ、物事をデータベースに与える場所) – mel
上記のコードでは、スクリプト内のDjango環境を明示的に初期化するので、スクリプトがどこにあるかは関係ありません。必要なら、jobs-folderに置くことができます。 – skoll
"/ path/to/django/project"このパスは、自分のデータベースを設定するsettings.pyで終わる必要がありますか? – mel
を行う代わりに、代わりに
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
])
モジュール 'sqlite3'、' sqlalchemy'、 'peewee'を使用できます。または、 'JSON'を' CSV'に変換して、データベースビューア/エディタを使って直接データベースにインポートすることもできます。 JSONからデータを直接インポートできるかどうかはわかりません。 [DB Browser for SQLite](http://sqlitebrowser.org/) – furas