小编oro*_*aki的帖子

搞清楚引发`ImportError`时出了什么问题

以Django为例,在manage.py:

try:
    import settings
except ImportError:
    sys.stderr.write("Error: Can't find the file 'settings.py'...")
Run Code Online (Sandbox Code Playgroud)

看似合法,但settings进口时会发生什么non_existant_lib_foo

好吧,你被追捕了所有你可以做的事情PATH,等等.

当然,您可以使用except ImportError as e:并打印出实际的错误消息,但如果您只想捕获特定错误并提供一些非常好的建议,如上所述,该怎么办?

您或多或少地使用正则表达式,或者最好猜测"正确"模块导入失败,然后显示消息.

有没有更好的方法来处理这个?

python exception python-import

3
推荐指数
1
解决办法
1万
查看次数

Django ORM:为什么Django会单独使用SELECT(1)?

当使用Django(使用SQLite3)时,我注意到以下查询connection.queries:

"sql": "SELECT (1) AS \"a\" FROM \"blog_comment\" WHERE \"blog_comment\".\"id\" = 5  LIMIT 1"
Run Code Online (Sandbox Code Playgroud)

我明白什么该做查询(只是从每个匹配行返回的第一列),但为什么要这样做呢?

它只是在SQLite3中检查EXISTS的廉价方法吗?如果是这样,它将在什么情况下单独使用?

python sql sqlite django

3
推荐指数
1
解决办法
704
查看次数

jQuery - 为什么委托传播,即使在调用`e.preventDefault`之后?

我有一个带嵌套链接的div.div有一个delegate处理程序'click',用于警告"Div".div中的链接还有一个delegate处理程序,用于在警告"链接"之前调用'click'其中e.preventDefault();.当我点击链接时,我会看到"Div"警报和"Div"警报.我不清楚为什么会发生这种情况,因为我试图阻止链接点击处理程序的传播.

JavaScript的

$('body').delegate('.outer', 'click', function(e){
    e.preventDefault();
    alert('Div');
});

$('body').delegate('.outer a', 'click', function(e){
    e.preventDefault();
    alert('Link');
    // Note: I've also tried returning false (vs using preventDefault), per the docs
});
Run Code Online (Sandbox Code Playgroud)

HTML

<div class="outer">
    <a href="#">Click me</a>
</div>
Run Code Online (Sandbox Code Playgroud)

javascript jquery

3
推荐指数
1
解决办法
2113
查看次数

长时间运行的事务会使数据库陷入困境吗?

注意:我使用的是 Postgres 9.x 和 Django ORM

我的应用程序中有一些函数可以打开事务,运行一些查询,然后执行几秒钟的其他操作(第 3 方 API 访问等),然后再运行一些查询。这些查询并不是很昂贵,但我一直担心,由于打开了许多事务这么长时间,我最终会以某种方式使我的数据库陷入困境或耗尽连接或其他什么。就性能而言,这有多大影响?

django postgresql transactions

3
推荐指数
1
解决办法
1423
查看次数

哪个内置的Postgres复制最适合我基于Django的用例?

我注意到Postgres现在具有内置复制功能,包括同步复制,流复制和其他一些变体.它甚至可以为应用程序级别的特定操作提供控制同步的能力(例如,对于诸如汇款等重要事项使用同步,但可能不会用于诸如用户评论之类的不太重要的事情等)

我正在使用Django 1.5(即dev)开发软件,并且可能需要同步复制(将继续进行与商业相关的事务).

您是否认为内置工具在大多数情况下最适合工作,您是否对内置复制的一种变体与另一种变体,易用性,质量等有任何想法?

最后一件事; Slony和PGPool II似乎非常流行(特别是Slony)用于复制.有没有A)特定的技术原因,因为它们比内置复制更受欢迎,或者B)是因为很多人使用的是没有内置复制的版本,或者C)我是否曾经在岩石下和PG内置复制已经非常流行?

更新(更多细节)

我只有2台物理服务器,它们位于同一个机架中.我的目的是提供一个可以自动变成主机的从机,如果在一台机器上发生了某些特定的错误(或者甚至是像双电源故障那样简单的事情等).我不介意我的客户在自动故障转移期间遇到停机时间,只要停机时间是几分钟左右,而不是一小时或者其他什么.

我希望零数据丢失,并愿意在故障转移过程中牺牲更多时间.有没有办法在不进行同步复制的情况下进行这种交易(例如,没有回写确认的流式传输日志)?

您会推荐什么策略或复制变体?

database django postgresql database-replication

3
推荐指数
1
解决办法
1604
查看次数

ALTER COLUMN TYPE varchar(N) 是否重写 Postgres 9.6 中的表?

在过去

我们用 Postgres 8.4 处理这个问题的方法是手动更新pg_attribute表:

LOCK TABLE pg_attribute IN EXCLUSIVE MODE;
UPDATE pg_attribute SET atttypmod = 104
    WHERE attrelid = 'table_name'::regclass AND
          attname = 'column_name';
Run Code Online (Sandbox Code Playgroud)

column_name是 avarchar(50)并且我们想要 a varchar(100),但是该表太大(数千万行)并且过于频繁地用于重写。

如今

围绕这个主题的内容和答案对于这样一个(至少是轶事)常见问题来说是稀疏和过时的。

但是,在看到至少 3 次讨论可能是这种情况的提示后,我开始认为使用较新版本的 Postgres(我们在 9.6 上),您现在可以运行以下命令:

ALTER TABLE 'table_name' ALTER COLUMN 'column_name' TYPE varchar(100);
Run Code Online (Sandbox Code Playgroud)

...无需重写表格。

这样对吗?

如果是这样,您是否知道 Postgres 文档中存在有关该主题的某些明确信息?

postgresql ddl varchar postgresql-9.6

3
推荐指数
1
解决办法
1500
查看次数

Django:如何在模型中验证unique_together

我有以下内容:

class AccountAdmin(models.Model):

    account = models.ForeignKey(Account)
    is_master = models.BooleanField()
    name = models.CharField(max_length=255)
    email = models.EmailField()

    class Meta:
        unique_together = (('Account', 'is_master'), ('Account', 'username'),)
Run Code Online (Sandbox Code Playgroud)

如果我然后在同一个帐户上创建一个与另一个用户名相同的新AccountAdmin,而不是让我在模板中显示错误,则会出现IntegrityError,页面就会中断.我希望在我看来,我可以去:

if new_accountadmin_form.is_valid():
    new_accountadmin_form.save()
Run Code Online (Sandbox Code Playgroud)

我该如何克服这个问题.是否有第二种is_valid()类型的方法检查数据库是否违反了该unique_together = (('Account', 'is_master'), ('Account', 'username'),)部分?

我不想在我的视图中捕获IntegrityError.那个域逻辑与表示逻辑混合在一起.它违反DRY,因为如果我在2页上显示相同的表格,我将不得不重复相同的块.它也违反了DRY,因为如果我有两种形式用于同一件事,我必须写相同的,除了:再次.

python django django-models unique-constraint django-views

2
推荐指数
1
解决办法
1万
查看次数

Django:如何自动增加可以具有多个相同值的字段

我有一个应用程序,让人们创建票证,每个帐户所有者使用我的应用程序可以创建票证.

首先,您认为每个帐户应该是唯一的吗?或者,它应该是完全独特的吗?

像这样:

class Ticket(models.Model):
    """
    An ticket created by an Account holder.
    """
    account = models.OneToOneField('Account')
    number = models.CharField(max_length=20, verbose_name='Ticket Number')

    class Meta:
        unique_together = (('account', 'number'),)
Run Code Online (Sandbox Code Playgroud)

或者这个,分别是:

class Ticket(models.Model):
    """
    An ticket created by an Account holder.
    """
    account = models.OneToOneField('Account')
    number = models.CharField(unique=True, max_length=20, verbose_name='Ticket Number')
Run Code Online (Sandbox Code Playgroud)

然后,当然我希望订单号代表帐户,因此可能是具有id:"chris"的帐户的样本订单号可以是"chris-41984"或类似的东西.你会为此创建一个模型方法,还是......?

django django-models

2
推荐指数
1
解决办法
2045
查看次数

Python:对装饰器非常困惑

我以为我理解装饰者但不再理解了.装饰器只在创建函数时起作用吗?

我想创建一系列函数,这些函数都有一个名为'ticket_params'的必需参数,这是一个字典.然后用类似的东西装饰它们@param_checker(['req_param_1', 'req_param_2'])然后如果'req_param_1'和'req_param_2'不在字典中,则引发一个自定义的Exception子类.我觉得这一切都错了吗?

在调用代码中会是这样的:

@param_checker(['req_param_1', 'req_param_2'])
def my_decorated_function(params):
    # do stuff

params = {'req_param_1': 'Some Value'}
my_decorated_function(params)

# exception would be raised here from decorator.
Run Code Online (Sandbox Code Playgroud)

python decorator

2
推荐指数
2
解决办法
645
查看次数

Django:为什么我不能让我的开发服务器工作?

我在Windows XP上安装了最新的Python 2.6(开发服务器一直在工作到昨晚).我有路径和Python路径的东西都设置,我的开发服务器已经永远工作.我最近用Django主干的新拉取代了我的django-trunk.我想也许有一个导入错误或Django在我的应用程序的models.py中没有捕获到的东西所以我开始了一个新项目(空的但仅用于测试)但它仍然无效.我重新启动了我的计算机并再次尝试了新的空应用程序python manage.py runserver 8080然后继续http://127.0.0.1:8080/工作("恭喜.Django是insta ......").所以我将CD转到我的真实项目并再次尝试,但它没有用.我没有得到堆栈跟踪或类似的东西.[17/Ja/2010 16:30:51] "GET / HTTP/1.1" 301 0我访问时要么得到输出http://127.0.0.1:8080/在我的CMD提示中或我什么也得不到(即使我很难刷新等).这可能是什么?

更新(重要):

Firefox can't find the server at www.127.0.0.1.即使我在,Firefox告诉我http://127.0.0.1:8080/.这是否意味着Django真的因为其他原因向www.127.0.0.1发送了301?

PREPEND_WWW从settings.py中删除了,甚至删除了settings.py中安装的所有应用程序(django admin和预设的应用程序除外).

更新2:它适用于Safari!怎么会这样?这就像Firefox正在获得某种301,但Safari工作得很好.

django firefox django-urls http-status-code-301

2
推荐指数
1
解决办法
909
查看次数