Вытягивание данных в шаблон из внешней базы данных с помощью django

Я собираюсь создать веб-приложение, в котором пользователи могут посещать URL-адрес, регистрироваться и просматривать отчеты и другую информацию. Однако данные для отчетов хранятся во внешней базе данных. Это база данных MySQL, к которой у меня будет доступ.

Я немного поработал над Google, и мне не удавалось найти какие-либо примеры. Я немного поучаствовал в подключении к нескольким базам данных – https://docs.djangoproject.com/en/dev/topics/db/multi-db/. Так что я могу подключиться к базе данных в порядке.

В следующей части я застрял. Данные в базе данных будут обновляться все время. Я не хочу иметь возможность редактировать информацию и не хочу, чтобы я мог перезаписать что-либо. Я просто хочу, чтобы иметь возможность подключиться к БД, вытащить требуемую информацию, а затем просмотреть ее через шаблон, чтобы пользователь мог видеть. Прежде всего потому, что данные постоянно обновляются, будет ли это проблемой? (Надеюсь нет!)

Как только я подключился к базе данных, что лучше всего, чтобы вытащить данные, а затем поместить их в формат, который я могу вывести на шаблон? Нужно ли мне импортировать данные в модели, а затем управлять ими. Или мне нужно будет преобразовать данные с помощью JSON или XML?

Я довольно новичок в python / django, поэтому любая помощь будет высоко оценена. Если вам нужна дополнительная информация, пожалуйста, спросите и заблаговременно. 🙂

3 Solutions collect form web for “Вытягивание данных в шаблон из внешней базы данных с помощью django”

Нет проблем! Я все время это делаю.

Что касается «не изменять или обновлять данные», просто не добавляйте ничего в свое приложение, которое бы обновляло данные. Рекомендация Салема об использовании разрешений на стороне MySQL также является хорошей идеей.

Для получения данных у вас есть два варианта:

1) Вы можете создавать модели Django, соответствующие вашим таблицам в базе данных MySQL. Вы можете сделать это вручную, или вы можете использовать команду «inspectdb» с помощью manage.py, чтобы дать вам хорошую отправную точку. Затем сделайте что-то вроде этого:

def myview(request): rows = MyModel.objects.using('mysql').all() return render_to_response("mytemplate.html", {"rows" : rows }) 

2) Вы можете управлять соединениями и запросами вручную в своем приложении. Это совершенно верно в представлении:

 def myview(request): conn = MySQLdb.connect("connection info here") try: cursor = conn.cursor() cursor.execute("select * from mytable") rows = cursor.fetchall() finally: conn.close() return render_to_response("mytemplate.html", {"rows" : rows}) 

наконец – Django с удовольствием использует MySQL в качестве базы данных. Это может упростить ситуацию, если ваш администратор баз данных позволит Django создавать свои таблицы прямо в одной базе данных.

Если данные будут обновляться, не будет никаких проблем.

Теперь для извлечения данных из базы данных вам сначала нужно импортировать соответствующую модель в свои представления

 from app_name.models import model_name def view_report(request): r_name=request.POST.get('r_name','default_value') r=model_name.objects.get(report_name=r_name) return render_to_response('url',{'r':r}) 

В вашем шаблоне

 {{r.report_desc}} 

Чтобы сделать ваш доступ к базе данных «только для чтения», я думаю, что лучший вариант – создать ограниченную часть, используемую на стороне MySQL, только с SELECT:

 GRANT SELECT ON target_database.* TO your_user@'your_host' IDENTIFIED BY 'your_password'; 

Это гарантирует, что в любом случае обновление / изменение будет успешным.

Обычно вы моделируете таблицы базы данных как объекты, потому что это упрощает работу с записями базы данных из Python и дает вам некоторую абстракцию, но вы можете выполнять необработанные SQL-запросы, если считаете, что это правильно.

В зависимости от того, как вы хотите представить свои данные, вам может потребоваться преобразовать его в нечто.

Если вы хотите сделать ваше приложение более динамичным (например, получение новых данных через 10 секунд и представление его пользователю без обновления), вам, вероятно, потребуется преобразовать его в какой-то формат, более подходящий для использования с AJAX, например JSON или XML (у Django есть инструменты для сериализации , готовые к использованию). Если вам просто нужно «статическое» приложение (то есть: пользователь щелкает по ссылке / кнопке и переходит на страницу, где представлены данные, и для обновления пользователь должен обновить страницу), вы можете использовать объекты, извлеченные из базы данных на ваш взгляд.

  • Лучший способ генерации xml?
  • Анализатор Python SVG
  • Работа с пространством имен при анализе XML с использованием ElementTree
  • Извлечение данных из базы данных PostgreSQL без использования pg_dump
  • Как передать заголовки SOAP в SUDS-Python, которые не определены в файле WSDL
  • Как эту функцию можно переписать для реализации OrderedDict?
  • Динамические веб-сайты Python Scrapy
  • Любой опыт работы с протокольными буферами?
  • Python - лучший язык программирования в мире.