O método de anexar opções personalizadas do banco de dados quando django cria uma tabela - como especificar o mecanismo de armazenamento do banco de dados

 

    Ao usar o syncdb do django para criar uma tabela, se você quiser adicionar opções específicas ao SQL de criação de tabela - por exemplo, o mecanismo de armazenamento padrão do banco de dados MySQL é MyISAM, mas você deseja que todas as tabelas recém-criadas sejam mecanismos InnoDB - você pode add settings.py As opções em DATABASES no arquivo também podem ser implementadas executando automaticamente os dados SQL iniciais.

 

 

    1. A maneira de modificar settings.py


    Adicione o dicionário OPTION à instância do banco de dados do dicionário DATABASES, o código é o seguinte:

O dicionário OPTION pode usar muitas chaves, você pode consultar http://mysql-python.sourceforge.net/MySQLdb.html#functions-and-attributes

Aqui usamos'init_command ':' SET storage_engine = INNODB 'para especificar o mecanismo INNODB a ser usado ao criar cada tabela.

 

Essas informações adicionais não aparecerão no SQL impresso por python manage.py sqlall appname.

Mas quando executamos "show create table table_name;" no cliente MySQL, podemos ver ... ENGINE = InnoDB ...

 

Alguns problemas com este método:

1. Adicionar informações como'use_unicode ': True,' charset ':' gbk 'em OPTION não pode alterar o conjunto de caracteres padrão da tabela criada

2. Usando'init_command ':' SET NAMES “gbk” 'também não pode alterar o conjunto de caracteres padrão da tabela criada

3. Não consigo encontrar a documentação sobre como usar init_command e não sei como usá-lo para adicionar outras opções

 

 

    Em segundo lugar, a maneira de executar automaticamente os dados SQL iniciais


Ao usar python manage.py syncdb para inicializar o banco de dados, Django irá procurar pelo arquivo cujo caminho é <appname> / sql / <modelname>. <backend> .sql-if appname é am, modelname é Student e o backend do banco de dados é django.db .backends.mysql, então o caminho do arquivo é am / sql / student.mysql.sql (o nome do módulo Student é convertido para aluno em minúsculas) -então execute-o.

 

Você pode adicionar essas instruções neste arquivo sql:

Após a inicialização, podemos usar show create table T_VLR_REPORT_TAB; para ver se o mecanismo de armazenamento e o conjunto de caracteres padrão foram alterados, e também podemos ver que há 2 linhas de dados na tabela myapp_person.

 

Link de referência: http://docs.djangoproject.com/en/dev/ref/databases/#connecting-to-the-database

                    http://docs.djangoproject.com/en/dev/howto/initial-data/#initial-sql

 

Acho que você gosta

Origin blog.csdn.net/huzhenwei/article/details/5882252
Recomendado
Clasificación