0
私はMac OS X上で私のdjangoからAzure SQLサービスに接続しようとしています。 私が行うとき、私はこれのためにDjangoは、SQL Serverのクエリに角括弧を追加します。
from photo_mapper.models import Restaurant
rest_query = Restaurant.objects.all().query
print rest_query
SELECT [ate_it.restaurant].[id], [ate_it.restaurant].[name], [ate_it.restaurant].[area], [ate_it.restaurant].[city], [ate_it.restaurant].[submitter], [ate_it.restaurant].[pending], [ate_it.restaurant].[zid] FROM [ate_it.restaurant]
を次のようにしますRestaurant.objects.all()
私はしかし、私は手動でそれが正常に動作django.db.connections
を使用してクエリSELECT * from ate_it.restaurant
を実行すると
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/anubhav/workspace/ate-it/venv/lib/python2.7/site-packages/django/db/models/query.py", line 234, in __repr__
data = list(self[:REPR_OUTPUT_SIZE + 1])
File "/Users/anubhav/workspace/ate-it/venv/lib/python2.7/site-packages/django/db/models/query.py", line 258, in __iter__
self._fetch_all()
File "/Users/anubhav/workspace/ate-it/venv/lib/python2.7/site-packages/django/db/models/query.py", line 1074, in _fetch_all
self._result_cache = list(self.iterator())
File "/Users/anubhav/workspace/ate-it/venv/lib/python2.7/site-packages/django/db/models/query.py", line 52, in __iter__
results = compiler.execute_sql()
File "/Users/anubhav/workspace/ate-it/venv/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 848, in execute_sql
cursor.execute(sql, params)
File "/Users/anubhav/workspace/ate-it/venv/lib/python2.7/site-packages/django/db/backends/utils.py", line 79, in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "/Users/anubhav/workspace/ate-it/venv/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "/Users/anubhav/workspace/ate-it/venv/lib/python2.7/site-packages/django/db/utils.py", line 95, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/Users/anubhav/workspace/ate-it/venv/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "/Users/anubhav/workspace/ate-it/venv/lib/python2.7/site-packages/sql_server/pyodbc/base.py", line 538, in execute
return self.cursor.execute(sql, params)
ProgrammingError: ('42S02', "[42S02] [FreeTDS][SQL Server]Invalid object name 'ate_it.restaurant'. (208) (SQLExecDirectW)")
を取得します。 djangoが角括弧を追加するのを防ぐことができます。
私のデータベースの設定が
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'mydatabase',
'USER' : 'myuser',
'PASSWORD' : 'mypwd',
'HOST' : 'myserver',
'PORT' : '1433',
}
}
ている私は、これが原因pyodbcであるFreeTDSのとunixODBCのセットアップのためのthis link
にこのライン
return '[%s]' % name
をこの関数quote_nameを修正しますか?いくつかあります;私はpyodbc == 3.0.10を推測していますが、どのDjangoパッケージですか? 'ate_it.restaurant'はスキーマ+テーブル名の組み合わせですか? – FlipperPA私はDjango 1.9.7を使用しています。 ate_itはスキーマであり、レストランはテーブル名です –