没有使用Django的Python数据库(用于Heroku)

jdo*_*dot 14 python database django heroku

令我惊讶的是,我没有在其他地方找到这个问题.简短版本,我正在编写一个我计划部署到云端的应用程序(可能使用Heroku),它将进行各种网络抓取和数据收集.它将在云中的原因是我可以将它设置为每天运行并将数据拉到其数据库而不用我的计算机,以及团队的其他成员可以访问数据.

我以前使用AWS的SimpleDB和DynamoDB,但我发现SDB的存储限制很小,DDB的查询能力很差,所以我正在寻找一个可以存储任意长度值的数据库系统(SQL或NoSQL) (理想情况下是任意数据结构),可以在任何字段上查询.

我已经为Heroku找到了许多数据库解决方案,比如ClearDB,但我看到的所有信息都显示了如何设置Django来访问数据库.由于这是脚本而不是网站,如果我不需要,我真的不想深入Django.

在没有使用Django的情况下,我可以使用Python在Heroku中连接任何类型的数据库吗?

Cra*_*ens 20

您可以从Heroku获得数据库,而无需您的应用程序使用Django.为此:

heroku addons:add heroku-postgresql:dev
Run Code Online (Sandbox Code Playgroud)

如果您需要更大的专用数据库,可以在Heroku Postgres查看计划

在您的requirements.txt中,您需要添加:

psycopg2
Run Code Online (Sandbox Code Playgroud)

然后,您可以连接/与之交互,类似于以下内容:

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)
Run Code Online (Sandbox Code Playgroud)


san*_*lto 3

我会使用 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)
Run Code Online (Sandbox Code Playgroud)

很简单,嗯?

希望能帮助到你。

编辑:

正如 Endophage 提到的,与 Mongo 交互的另一个不错的选择是mongoengine。如果您有大量数据要存储,则应该看看。