我正在尝试使用我正在处理的"类似REST"的API来确定在不同场景下返回的正确状态代码.假设我有一个终点允许以JSON格式进行POST'ing购买.它看起来像这样:
{
"account_number": 45645511,
"upc": "00490000486",
"price": 1.00,
"tax": 0.08
}
Run Code Online (Sandbox Code Playgroud)
如果客户向我发送"sales_tax"(而不是预期的"税收"),我应该返回什么.目前,我要回400.但是,我已经开始质疑自己了.我应该真的回来422吗?我的意思是,它是JSON(支持)并且它是有效的JSON,它只是不包含所有必需的字段.
我在Heroku上使用Python/Django(Cedar Stack),我有一个我需要编写的管理命令,它将从S3存储桶中取出一个文件并对其进行处理.我不确定我是否理解如何使用短暂的文件系统.是否只有某些可写的目录?我发现另一篇文章暗示只有某些文件夹是可写的(但是,它似乎不适用于Cedar堆栈).我发现了这篇开发文章,但它没有详细介绍(注意:我确实理解它只是暂时的.我只需要解压缩文件并处理文件).我可以在应用程序的根目录下的任何位置创建一个文件夹吗?我怎么能得到它?好像我可能只是使用$ HOME.我通过连接到via做了一些测试
$ heroku run bash
Run Code Online (Sandbox Code Playgroud)
和运行:
$ echo #HOME
Run Code Online (Sandbox Code Playgroud)
收益:
/应用
和运行:
$ mkdir $HOME/tmp
Run Code Online (Sandbox Code Playgroud)
在应用程序的根目录中创建一个文件夹,并提供与其他文件和文件夹相同的用户和组.
那么......我在这里缺少什么?一个更好的方法吗?这有OS环境变量吗?我跑"env"而且我看不到更好的一个.
我想在PostgreSQL 9.1.5中更改枚举类型中项目的名称.
这是类型的创建stmt:
CREATE TYPE import_action AS ENUM
('Ignored',
'Inserted',
'Updated',
'Task created');
Run Code Online (Sandbox Code Playgroud)
我只想将'Task created'改为'Aborted'.从文档中可以看出,以下内容应该有效:
ALTER TYPE import_action
RENAME ATTRIBUTE "Task created" TO "Aborted";
Run Code Online (Sandbox Code Playgroud)
但是,我得到一个消息:
********** Error **********
ERROR: relation "import_action" does not exist
SQL state: 42P01
Run Code Online (Sandbox Code Playgroud)
但是,它显然确实存在.
该类型当前正由多个表使用.
我认为一定不能有办法做到这一点.我已经尝试了pgAdminIII中类型的对话框,但我无法看到它在那里重命名.(所以,要么强烈暗示我做不到,要么 - 我希望 - 一个小的疏忽是创建该对话的开发人员)
如果我不能在一个声明中这样做?那我该怎么办?我是否必须编写脚本来添加项目,将所有记录更新为新值,然后删除旧项目?这甚至会起作用吗?
看起来这应该是一件简单的事情.据我了解,记录只是存储对类型和项目的引用.我认为它们实际上并不存储我给它的文本值.但是,也许我在这里也错了.
警告!我在这里有点钓鱼之旅,我甚至不确定我问的问题是否完全有意义.请善意回复你!:)
我最近接手了一个目前基于Java + Linux + Tomcat + MySQL的项目.现在,该系统基本上只是一个在后台有一些cron工作的网站,可以移动一些数据等等.在与产品经理合作开发优先顺序时,很清楚他想做什么我需要开始开发面向服务的体系结构(SOA < - buzz word warning!),最终我将结合使用Web服务器和应用程序服务器.注意:我正在考虑转向Glassfish v3.
目前,身份验证和授权在Java代码中处理,用户信息存储在MySQL数据库中.至少在我看来,我需要将其拆分为一个单独的身份验证服务(否则,最终将会出现一堆重复的代码来处理用户身份验证和授权).
我一直在研究单点登录(SSO)类型解决方案并进行一些研究.从我可以收集的信息来看,OpenSSO已被Oracle正式删除,但被ForgeRock收录,现在被称为OpenAM.这似乎非常接近我想要的,但由于我已经有一个基于MySQL的系统,我宁愿有一些东西支持它(或其他一些RDBMS).我在Stack Overflow上找到了它,它似乎表明它基本上是LDAP或什么也没有.
有没有办法让OpenSSO/OpenAM与数据库通信以进行身份验证和授权?
我的问题是:
OpenSSO/OpenAM有哪些其他选择?LDAP是否可行?注意:执行"OpenAM vs"谷歌搜索不会产生太多影响.人们倾向于"自己动手"吗?
任何有助于教育我的关于此主题的想法/建议/链接将不胜感激.提前感谢您的耐心和帮助.
我有一些EC2服务器从SQS队列中取消工作.偶尔,他们会遇到无法完成工作的情况.我有这个过程给我发电子邮件的条件.现在看来,消息一直"飞行"直到它超时.我希望该过程在发送电子邮件后立即将其释放回队列.但是,我不知道如何实现这一目标.有办法吗?如果是这样,请指点我电话或发布代码片段.
我正在使用Python 2.7.3和Boto 2.5.2.
有没有办法在创建新模型时不必传入外键的模型实例?假设我有以下型号:
class Foo(models.Model):
description = models.CharField(max_length=100)
class Meta:
db_table = u'foo'
class Bar(models.Model):
info = models.CharField(max_length=100)
foo = models.ForeignKey('Foo')
class Meta:
db_table = u'bar'
Run Code Online (Sandbox Code Playgroud)
后一个帖子请求进入视图 - 我知道foo记录的id,只是想在条形图表中插入一条记录.
如果我做:
new_bar = Bar(info="something important", foo=foo_id)
new_bar.save()
Run Code Online (Sandbox Code Playgroud)
我得到一个ValueError说"无法分配"546456487466L":"Bar.foo"只是一个"Foo"实例.
所以,我明白了...它希望我有一个Foo模型的实际实例.我知道我可以做一个Foo然后传入它.但是,似乎必须有一种方法来覆盖这个功能.我做了一些谷歌搜索和阅读文档,管理员中的raw_id_fields似乎是基本的想法.(也就是说,在这里允许原始id).但是,不要在ForeignKey字段上看到此选项.
对数据库进行往返以获取对象来获取id(我已经拥有)似乎非常低效.我知道进行往返验证了数据库中存在的id.但是,嘿......这就是我使用RDBMS并首先拥有外键的原因.
谢谢
我正在尝试使用补丁从方法中返回一个Mock.基本结构如下:
MyCode.py
class MyClass:
def __init__(self, first_name, last_name):
self.first = first_name
self.last = last_name
def get_greeting(self):
return 'Hello {f} {l}'.format(f=self.first, l=self.last)
def get_new_greeting(first_name, last_name):
obj = MyClass(first_name, last_name)
return obj.get_greeting()
my_code_test.py
import unittest
from mock import Mock, patch
import my_code
class TestMyCode(unittest.TestCase):
def setUp(self):
pass
@patch('my_code.MyClass')
def test_get_greeting(self, MockClass):
instance = MockClass.return_value
mock_greeting = 'Hello Me'
instance.get_greeting.return_value = mock_greeting
greeting = my_code.get_new_greeting('john', 'doe')
self.assertEqual(greeting, mock_greeting)
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
上面的代码对我来说很好.但是,当我将相同的模式应用于我正在尝试测试的实际代码时,真实对象(不是模拟对象)将在被测试的方法中返回.我看不出任何差异.唯一不同的是,真正的类是在init .py文件中定义的.我不确定这是否有所作为?以前见过这个吗?
注意:实际的lib是twilio 3.3.5,我使用的是Python 2.6.5和Django 1.3.1以及Mock 0.7.2
我已经开始研究一个项目,那里有一个相当大的表(大约82,000,000行),我觉得它非常臃肿.其中一个字段定义为:
consistency character varying NOT NULL DEFAULT 'Y'::character varying
Run Code Online (Sandbox Code Playgroud)
它用作布尔值,值应始终为('Y'|'N').
注意:没有检查约束等.
我试图找出理由改变这个领域的理由.这是我有的:
这是我的问题.
boolean,它应该是1个字节,而对于'Y'UTF-8中的a 应该是1个字节(至少这是我在Python中检查长度时得到的).这里是否还有其他存储空间可以保存?=TRUE"与" ='Y'"的原因而获得任何性能提升吗?postgresql storage database-design query-optimization postgresql-9.1
psql在使用setvs. \setvs. 之间工作时,我有时会感到困惑\pset.我觉得:
set用于连接到db的会话变量.例如SET ROLE dba;\set用于此psql会话的局部变量.例如\set time 'select current_timestamp'\pset用于此psql会话的psql设置.例如'\pset border 2'但是,我从来没有找到我认为对每个人都很好的解释.我的假设是否正确?
我正在使用PostgreSQL 9.4
无论如何,在plpgsql函数中你可以获得函数的名称吗?甚至是功能的OID?
我知道plpgsql中有一些"特殊"变量(如FOUND),但似乎没有办法解决这个问题.(虽然,如果您的函数是用C语言编写的,我已经读过了.)这并不重要,但它会使我做得更好/更不脆弱.
我正在使用PostgreSQL v.9.1.5
postgresql ×4
python ×2
amazon-sqs ×1
boto ×1
django ×1
filesystems ×1
glassfish-3 ×1
heroku ×1
java ×1
mocking ×1
openam ×1
opensso ×1
plpgsql ×1
psql ×1
rest ×1
soa ×1
storage ×1
twilio ×1
unit-testing ×1