文章

3. 在Django项目中集成MySql

安装mysqlclient

1
pipenv install mysqlclient

在使用pipenv install mysqlclient时报错, 本来以为是mysqlclient或者pipenv的问题, 反复尝试无果

又随便找了几个其他的包尝试安装, 包括requests,pydoc

发现依然会出现同样的问题,但是像django等一些包就安装很顺利

最后找到一些解决方案, 需要安装一个名为pkg-connfig的包,

1
sudo apt-get install pkg-config

但是Mac 并不支持apt-get

于是只能换一种思路, 使用brew来安装pkg-config

经尝试

1
brew install pkg-config

运行完成之后mysqlclient便可以通过pipenv正常安装了

PS: brew安装:

1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

修改settings.py配置文件

vscode快捷键: cmd+T/ cmd+shift+O

修改DATABASES设置

1
2
3
4
5
6
7
8
9
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'storefront',
        'HOST': 'localhost',
        "USER": 'root',
        "PASSWORD": '000000'
    }
}

运行自定义SQL

  1. 生成一个空的migration文件:

    # sotre是子app的名字
    > python manage.py makemigrations store --empty
       
    Migrations for 'store':
      store/migrations/0002_auto_20231107_0610.py
    
  2. 可以修改该文件的名字, 如0002_insert_test_data.py

  3. 在文件中编辑SQL语句

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    class Migration(migrations.Migration):
       
        dependencies = [
            ('store', '0001_initial'),
        ]
       
        operations = [
             # 第一条SQL用于部署
             # 第二条SQL用于还原
             # 具体执行那一条根据python manage.py migrate来进行操作
            migrations.RunSQL("""
                INSERT INTO store_collection (title)
                VALUES ('collection1')
            """, """
                DELETE FROM store_collection
                WHERE title = 'collection1'
            """)
        ]
       
    
  4. 部署SQL

    1
    
    python manage.py migrate
    
  5. 还原

    1
    
    python manage.py migrate store 0001
    

添加测试数据

测试数据在线工具: https://mockaroo.com

在线编辑字段, 选择类型, 选择sql, 下载SQL文件

在datagrip中执行即可

或者使用Faker,DataFactory等python库进行数据生成

本文由作者按照 CC BY 4.0 进行授权