我有两个不同的Django项目。一个使用PostgreSQL,一个使用MySQL。
在postgres版本中,这有效。
migrations.RunSQL('''CREATE OR REPLACE view skill_ranked_by_person_view AS
SELECT link.id
, skill.id skill_id
, person.id person_id
, concat( skill_rank.rank, ' — ', replace(
concat(first_name,' ', middle_name, ' ' , last_name)
, ' ', ' '), ' (', skill_rank.name, ')' ) person
-- , *
FROM people_personskill link
INNER JOIN people_skill skill
ON link.skill_id = skill.id
INNER JOIN people_skillrank skill_rank
ON skill_rank.id = link.skill_rank_id
INNER JOIN people_person person
ON link.person_id = person.id
ORDER BY skill.rank desc, skill_rank.rank DESC'''),
在MySQL版本中,这失败了。
migrations.RunSQL('''
create or replace view client_view as
select IDAutoInteger as id
, concat(IDText,' - ', NameText) `client`
from clients
where IDText is not null
order by concat(IDText,' - ', NameText) ;
'''),
带
"sqlparse is required if you don't split your SQL "
django.core.exceptions.ImproperlyConfigured: sqlparse is required if you don't split your SQL statements manually.
两个项目都没有在requirements.txt文件中使用sqlparse。
是否需要sqlparse,如果是,请如何安装?
答案 0 :(得分:4)
解决方案很简单。
pip install sqlparse
我在MySQL项目中将sqlparse添加到requirements.txt。
我检查了sqlparse是否安装在不需要它的项目中并且没有安装。我不确定为什么一个项目需要它,一个没有,但问题的解决方法是通过pip安装sqlparse。
答案 1 :(得分:1)
根据Django文档:
有一些可选的Django功能需要第三方Python程序包,这些程序包(有意地)未指定为install_requires需要setup.py中的依赖项,因为并非每个人都希望安装它们。
然后他们列出了sqlparse:
- sqlparse用于迁移RunSQL的多行SQL语句