Подтвердить что ты не робот

База данных Python БЕЗ использования Django (для Heroku)

К моему удивлению, я не нашел этот вопрос в другом месте. Короче говоря, я пишу приложение, которое планирую развернуть в облаке (возможно, используя Heroku), который будет выполнять различные веб-скребли и сбор данных. Причина, по которой это будет в облаке, заключается в том, что я могу настроить ее для запуска каждый день каждый день и вытаскивать данные в свою базу данных без моего компьютера, а так же, чтобы остальная команда могла получить доступ к данных.

Раньше я использовал AWS SimpleDB и DynamoDB, но я обнаружил, что ограничения хранилища SDB для малых и DDB-запросов являются проблемой, поэтому я ищу систему баз данных (SQL или NoSQL), которая может хранить произвольные - значения длины (и идеально произвольные структуры данных) и которые могут быть запрошены в любом поле.

Я нашел много решений для базы данных для Heroku, таких как ClearDB, но вся информация, которую я видел, показала, как настроить Django для доступа к базе данных. Поскольку это предполагается script, а не сайт, я бы предпочел не погружаться в Django, если мне это не нужно.

Есть ли какая-нибудь база данных, с которой я могу подключиться к Heroku с Python без использования Django?

4b9b3361

Ответ 1

Я бы использовал MongoDB. Heroku поддерживает его, поэтому я думаю, что будет очень легко начать и масштабировать: https://addons.heroku.com/mongohq

О Python: MongoDB - очень простая база данных. Схема гибкая и очень хорошо подходит для словарей Python. Это что-то действительно хорошее.

Вы можете использовать PyMongo

from pymongo import Connection
connection = Connection()

# Get your DB
db = connection.my_database

# Get your collection
cars = db.cars

# Create some objects
import datetime
car = {"brand": "Ford",
       "model": "Mustang",
       "date": datetime.datetime.utcnow()}

# Insert it
cars.insert(car)

Довольно просто, ну?

Надеюсь, что это поможет.

EDIT:

Как упоминалось в Endophage, еще один хороший вариант для взаимодействия с Mongo - mongoengine. Если у вас много данных для хранения, вы должны взглянуть на это.

Ответ 2

Вы можете получить базу данных, предоставленную компанией Heroku, не требуя, чтобы ваше приложение использовало Django. Для этого:

heroku addons:add heroku-postgresql:dev

Если вам нужна более крупная выделенная база данных, вы можете изучить планы Heroku Postgres

В вашем файле requirements.txt вы хотите добавить:

psycopg2

Затем вы можете подключиться/взаимодействовать с ним, как показано ниже:

import psycopg2
import os
import urlparse

urlparse.uses_netloc.append('postgres')
url = urlparse.urlparse(os.environ['DATABASE_URL'])

conn = psycopg2.connect("dbname=%s user=%s password=%s host=%s " % (url.path[1:], url.username, url.password, url.hostname))
cur = conn.cursor()

query = "SELECT ...."
cur.execute(query)

Ответ 3

Я сделал это недавно с Flask. (Https://github.com/HexIce/flask-heroku-sqlalchemy).

Есть пара исправлений:

1. Если вы не используете Django, вам, возможно, придется самостоятельно настроить свою базу данных, выполнив следующие действия:

heroku addons:add shared-database

(Или любую другую базу данных, которую вы хотите использовать, другие стоят денег.)

2. URL-адрес базы данных хранится в Heroku в переменной среды DATABASE_URL.  В python вы можете это сделать.

dburl = os.environ['DATABASE_URL']

То, что вы делаете для подключения к базе данных, зависит от вас, один из них - SQLAlchemy.