小编oro*_*aki的帖子

在Postgres中手动排序列的正确方法是什么?

我有一个SaaS宠物项目用于开发票.在这里面,我想我的客户每票号1001开始很显然,我不能在Postgres的用一个简单的汽车领域,只是加1000的值,因为我所有的客户端将共享同一个数据库和同一个tickets表.我尝试使用整数列类型和查询(伪SQL)SELECT LATEST number FROM tickets WHERE client_id = [current client ID]来获取最新的数字,然后使用该数字+ 1来获取下一个数字number.问题在于,通过并发,两张票很容易以这种方式以相同的数字结尾.我需要能够在Django中或使用原始SQL(使用Bash或其他任何类型)执行此操作的数字.

我不是在寻找一种强迫我的榜样工作的方法.我只是在寻找一个解决方案来解决我需要为每个客户端单独增加票号的问题.

sql django postgresql autofield sequence

5
推荐指数
1
解决办法
568
查看次数

如果在锁定行的父级上尝试级联删除,PostgreSQL会发生什么?

我有一个表foo_bar,另一个表spam_eggsfb外键指向foo_bar.spam_eggs删除相关的行时会级联spam_eggs.fb删除.

我正在使用PostgreSQL.

在我曾经用于SELECT... FOR UPDATE锁定spam_eggs行的事务中.在此事务的持续时间内,另一个事务已尝试DELETE FROM...foo_bar我的锁定行相关联.这会触发错误,还是我的锁定行会导致查询阻塞直到我的原始更新事务结束?

sql postgresql select transaction-isolation

5
推荐指数
1
解决办法
908
查看次数

如何跨多个服务器/工作人员管理 websockets

aiohttp内置了对websockets 的支持。它非常简单并且运行良好。

文档中示例的简化版本是:

async def handler(request):
    ws = web.WebSocketResponse()
    await ws.prepare(request)

    # Async iterate the messages the client sends
    async for message in ws:
        ws.send_str('You sent: %s' % (message.data,))

    print('websocket connection closed')
Run Code Online (Sandbox Code Playgroud)

在示例中,ws是对与客户端的 websocket 连接的引用。我可以轻松地将此引用放入request.app,就像@Crandel 在这里所做的那样(即全局状态),但不能放在生产应用程序中,因为每个应用程序服务器(甚至每个工作人员)都有自己的app实例。

对此有公认的模式吗?还有其他方法吗?

注意:我不是指会话。我指的是连接。当服务器 B 中的应用程序代码中发生事件时,我想向连接到服务器 A 的客户端发送一条消息,等等。

python websocket channels aiohttp python-3.5

5
推荐指数
1
解决办法
5625
查看次数

如何将000000000001变为1?

我需要将格式化的整数转换为常规整数:

  • 需要将000000000001变为1
  • 000000000053需要变成53
  • 000000965948需要变成965948

等等.

看起来int(000000000015)数字13的结果很简单.我知道幕后有一些奇怪的东西.每次都准确地做到这一点的最佳方法是什么?

python parsing integer

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

Django:为什么这个自定义模型字段的行为不符合预期?

以下字段用于将货币格式化为两位十进制(量化).您可以看到它返回<decimal>.quantize(TWOPLACES)存储的十进制版本.但是,当我在Django管理员中查看它时,它不会这样做.如果我投入50到使用现场CurrencyField(),并查看它在管理,我得到50VS 50.00.这是为什么?

from django.db import models
from decimal import Decimal


class CurrencyField(models.DecimalField):
    """
    Only changes output into a quantized format. Everything else is the same.
    """
    def __init__(self, *args, **kwargs):
        kwargs['max_digits'] =  8
        kwargs['decimal_places'] = 2
        super(CurrencyField, self).__init__(*args, **kwargs)

    def to_python(self, value):
        try:
            return super(CurrencyField, self).to_python(value).quantize(Decimal('0.01'))
        except AttributeError:
            return None
Run Code Online (Sandbox Code Playgroud)

更新:我尝试return 'Hello World'代替,return super(CurrencyField, self).to_python(value).quantize(Decimal('0.01'))它甚至没有在shell中显示'Hello World'.它又熄灭50了.这是否意味着当我访问模型的属性时,CurrencyField()它不会调用to_python()

django django-templates

4
推荐指数
1
解决办法
1390
查看次数

Django:对于特定于实例的规则是行级权限,还是与视图有关?

抱歉这个令人困惑的标题.我试着减少冗长,但......

我想知道的是:Django的新行级别权限(a)是否修复了多租户应用程序带来的设计问题(我不是指多个用户,而是使用相同的db/db架构的多个实例),或者它是(b)只是一个更复杂的权限版本,允许您根据标准的用户和Auth应用程序规则管理行级别的权限.

(即,我想限制对此帐户的对象a,b,c的访问权限,以及d,e,f到此帐户VS用户可以访问博客文章的标题而不是内容)

django django-models django-authentication multi-tenant

4
推荐指数
1
解决办法
710
查看次数

Django:使用自定义主键,我应该指定unique = True吗?

我读了这个页面:http://www.djangoproject.com/documentation/models/custom_pk/,示例没有列出unique = True.我想知道是否有令人信服的理由让他们不予理睬,或者我是否有理由将其包括在内.我的假设是指定primary_key = True会自动执行此操作.有什么想法吗?

django django-models

4
推荐指数
1
解决办法
2437
查看次数

基于WSGI的Python Web框架

我一直在和Django一起打路,看过Pylons.Pylons似乎正是我所需要的(更绿的草),但后来我意识到它们在整个地方都有全局变量,并且被黑暗灵魂注入的黑魔法(灵魂如此黑暗以至于它们甚至杀死了独角兽).

有没有什么是企业值得的(即,没有强加性能或扩展限制),留下我的方式,但提供基本的请求/响应处理,会话,SQLAlchemy(也许),以及一种方式插入模板等?有什么希望吗?

我一直在努力在Django开发SAAS,这是一场噩梦.它们不支持多列主键,并且在开发更复杂的应用程序(特别是具有多租户权限)时,您不会遇到模型转义等许多其他问题.我不使用它们的身份验证系统并不需要我自己构建.我只需要安全性(CSRF,XSS,SQL注入等).

python django pylons wsgi web-frameworks

4
推荐指数
1
解决办法
842
查看次数

线程局部线程是否安全?

具体来说,我在谈论Python.我试图通过查看对象的值而不传入它来破解某些东西(只是一点点),并且我想知道使用本地线程来执行该操作是否是线程安全的.另外,你甚至怎么做这样的事情?

python multithreading thread-safety thread-local

4
推荐指数
1
解决办法
672
查看次数

Python - 装饰器 - 试图访问方法的父类

这不起作用:

def register_method(name=None):
    def decorator(method):
        # The next line assumes the decorated method is bound (which of course it isn't at this point)
        cls = method.im_class
        cls.my_attr = 'FOO BAR'
        def wrapper(*args, **kwargs):
            method(*args, **kwargs)
        return wrapper
    return decorator
Run Code Online (Sandbox Code Playgroud)

装饰者就像电影Inception; 你去的级别越多,它们就越混乱.我正在尝试访问定义方法的类(在定义时),以便我可以设置类的属性(或更改属性).

版本2也不起作用:

def register_method(name=None):
    def decorator(method):
        # The next line assumes the decorated method is bound (of course it isn't bound at this point).
        cls = method.__class__  # I don't really understand this.
        cls.my_attr = 'FOO BAR'
        def wrapper(*args, **kwargs): …
Run Code Online (Sandbox Code Playgroud)

python decorator

4
推荐指数
1
解决办法
1939
查看次数