1. ホーム
  2. パイソン

django データベースに接続する sqlite

2022-03-02 17:17:43
<パス

アフォリズム

戦うことに意義がある。

django モデルから sqlite データベースへの接続

<ブロッククオート

djangoのバージョンは1.11.7です。

  1. ブログプロジェクトの下にアプリの記事を作成します。

    python manage.py startapp article
    

  2. ブログプロジェクトの構造体の下に、さらに記事ディレクトリが追加されます

  3. 記事の下にあるmodels.py ファイルに

from django.db import models
        class Article(models.Model):
            name = models.CharField('name',max_length = 30)
            age = models.CharFiels('age',max_length = 5)
            class Meta:
                db_table = 'Article'

  • step4: サブブログのディレクトリの中で setting.py ファイル

    - What kind of database to connect to : sqlite ? mysql?
    - The path to the database to connect to
    
        The following configuration represents:
        1. sqlite database and create an article.db database file in the project root directory
        2. the type of database and the location of the database storage
    
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.sqlite3',
                'NAME': os.path.join(BASE_DIR, 'article.db'),
            }
        }
    
    
python manage.py makemigrations

  • step5: 実行
    python manger.py makemigrations
    

model.py の内容を変更した後、以下のコマンドを実行します。 Migrations for 'article': article\migrations\0001_initial.py - Create model Article これは、アプリの下に migrations ディレクトリを作成し、0001_initial.py などの model.py への変更をすべて記録したのと同じですが、この変更はまだ はありません。 データベースファイルへの影響

cmdが表示されます。

python manage.py migrate





  • step6: 実行
    /blog/article
    

手順5の後にコマンドを実行し、このmodels.pyを変更します。 から データベースファイルには、次のように記述します。 (blog) C:\Users\by\Desktop\review\python\blog\blog>python manage.py migrate Operations to perform: Apply all migrations: admin, article, articles, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying article.0001_initial... OK Applying articles.0001_initial... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying sessions.0001_initial... OK データベースファイルが変更され、テーブルが生成されたり、データが操作されたりしている
cmdディスプレーで。

python manage.py sqlmigrate app_name 0001





  • step7: 実行
    sqlall
    
    
    
    

このコマンドは生成された SQL 文を表示するために使われ、以前の django バージョンの

(blog) C:\Users\by\Desktop\review\python\blog\blog>python manage.py sqlmigrate article 0001
BEGIN;
BEGIN; --
-- Create model Article
--
CREATE TABLE "Article" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(30) NOT NULL, "age& quot; varchar(5) NOT NULL);
COMMIT;



cmdが表示されます。

python manage.py dbshell





  • step8: コマンドの実行
    sqlite3 article.db
    

この場合、明らかにArticleが生成されています。Articlesは、私が以前に開始した別のアプリです。
または .tables 次に (blog) C:\Users\by\Desktop\review\python\blog\blog>python manage.py dbshell SQLite version 3.7.15.2 2013-01-09 11:53:05 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .tables Article auth_user_groups Articles auth_user_user_permissions auth_group django_admin_log auth_group_permissions django_content_type auth_permission django_migrations auth_user を表示することもできます。

cmdで

python manage.py shell


pythonのシェルを使ってarticle.dbにデータを挿入する

  1. 実行 >>> from article.models import Article ## Equivalent: from articles import models.Article >>> Article.objects.create(name='tom',age='12') <Article: Article object> >>> Article.objects.create(name='juice',age='13') <Article: Article object> プロジェクトのpythonコマンド実行環境へ
  2. Pythonの構文でデータベースにデータを挿入する

    sqlite article.db
    select * from article
    sqlite> select * from Article
       ... > ;
    1|tom|12
    2|juice|13
    sqlite>
    
    
  3. article.dbデータベースを表示する。

    • sqlite article.db
      
      
      select * from article
      
      sqlite> select * from Article
         ... > ;
      1|tom|12
      2|juice|13
      sqlite>