我尝试在多个数据库中使用django。一个默认的postgres-db和另一个mysql-db。我遵循了有关如何配置这两个dbs的文档:https://docs.djangoproject.com/en/4.0/topics/db/multi-db/
我的settings.py看起来像这样:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": "default",
"USER": "----------",
"PASSWORD": "-----------",
"HOST": "localhost",
"PORT": "5432",
},
"data": {
"ENGINE": "django.db.backends.mysql",
"NAME": "data",
"USER": "---------",
"PASSWORD": "---------",
"HOST": "localhost",
"PORT": "3306",
}
}
在查询默认数据库时,一切都很正常。但似乎django使用postgres-db sql语法来查询mysql-db:
# Model "Test" lives in the mysql-db.
Test.objects.using('data').all()
# gives me the following exception
psycopg2.errors.SyntaxError: ERROR: SyntaxError at ».«
LINE 1: EXPLAIN SELECT `test`.`id`, `test`.`title`, ...
它甚至使用postgres-db客户端psycopg 2来生成/执行它。
使用原始查询可以很好地工作,这意味着它确实正确地使用了特定查询的mysql-db。
Test.objects.using('data').raw('SELECT * FROM test')
# works
当使用不同引擎的多个数据库时,如何配置Django使用正确的SQL语法?
谢谢!
1条答案
按热度按时间cclgggtu1#
我在mssql和oracle上也遇到了同样的问题。Django为Oracle DB生成带有“[”&“]”符号的查询。我唯一想到的就是用