小编luk*_*kik的帖子

如何使用sqlalchemy将初始数据加载到数据库中

我希望能够在使用SQLAlchemy创建表时自动加载数据.

在django中,您可以使用fixtures,在创建表时,可以使用数据轻松预填充数据库.这个我觉得很有用,特别是当你有基本的"查找"表时,例如product_type,student_type只包含几行甚至是一个像货币一样的表,这些货币将加载世界上的所有货币而不必一次又一次地键入它们.你摧毁你的模特/班级.

我目前的应用程序不使用django.我有SQLAlchemy.我怎样才能实现同样的目标?我希望应用程序知道数据库是第一次创建,因此它会使用数据填充一些表.

python django sqlalchemy

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

如何将 multiprocessor.manager.list 转换为纯 python 列表

我的普通脚本在 20 秒内处理了大约 30,000 条记录。鉴于我必须处理的数据量(超过 5000 万条记录),我认为使用 python 的多处理是明智的。

在我的过程结束时,我使用 sqlalchemy 核心进行了数据库更新,其中我以 50,000 的批次更新处理过的记录。SQLAlchemy Core 要求您向它传递一个列表,以便它进行批量更新甚至插入。我会调用这个列表py_list

对于 Python 的多处理,我通过 a 捕获进程的结果multiprocessing.manager.list(),我将调用mp_list.

一切正常,直到我将 传递mp_list给 SQLAlchemy 批量更新语句。这失败并出现错误AttributeError: 'list' object has no attribute 'keys'。谷歌搜索给我带来了一个关于 SO的问题,它指出 multiprocessing.manager.list() 甚至 multiprocessing.manager.dict() 不是真正的 python 列表/字典。

那么问题是,如何将 multiprocessing.manager.list 转换为真正的 python 列表。

mp_list 填充如下:

import multiprocessing
manager = multiprocessing.Manager()
mp_list = manager.list()

def populate_mp_list(pid, is_processed):
    '''Mark the record as having been processed'''
    dict = …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy multiprocessing python-3.x

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

如何清除listproxy中的内容

如何清除共享的多进程manager.list?在下面的示例中,我想在循环继续之前清除它,以便新生成的进程找到一个空列表.

num_consumers = multiprocessing.cpu_count() 
p = multiprocessing.Pool(num_consumers)
manager = multiprocessing.Manager()
mp_list = manager.list()

def put_some_data(data):
    #Processing occurs and then we append the result
    mp_list.append(data)

def do_some_processing():
    While True:
        #Multiprocessing runs here
        result = p.map(put_some_data, data)
        mp_list.clear()
        #When done, break
Run Code Online (Sandbox Code Playgroud)

以上抛出错误 AttributeError: 'ListProxy' object has no attribute 'clear'

关于如何清除proxylist对象的文档不是很清楚()

python multiprocessing

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

您可以强制 celery 计划任务立即在 apply_sync 上运行吗?

我在 Celery 上有一个计划任务,每三分钟运行一次。但是,在某些情况下,我希望在高优先级任务进入时立即运行该任务。

例如,您有一个计划,每 3 分钟发送一次批量电子邮件。但是,当收到高优先级电子邮件时,我想send_email.apply_async()立即调用并运行它,然后仅发送该特定的高优先级电子邮件并退出。

我注意到的是,当我打电话时send_email.apply_async(kwargs=hig_priority_email_details),我注意到它没有立即执行,就像它在 3 分钟后被发送到运行一样。我可能会错过什么?

计划任务:

'engine.app_engine_v1_0.send_email.run-every-180-seconds': 
    {'task': 'engine.app_engine_v1_0.send_email',
     'schedule': timedelta(seconds=180),
     'kwargs': {'no_of_emails':60000, 'lock_expire':5, 'skip_lock':False}
     },
Run Code Online (Sandbox Code Playgroud)

python celery

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

time.strptime函数在线程模式下抛出错误

我有一个python函数,在"正常"模式下工作正常,但是当我在一个线程函数中运行它时会抛出一个错误.

功能

def is_valid_date(date_value, is_mandatory): 
    '''validate a date value. Return True if its a valid date
    http://stackoverflow.com/questions/2216250/how-can-i-validate-a-date-in-python-3-x
    '''
    try:
        if is_mandatory == True:
            if len(date_value) != 8:
                return False
            y = date_value[0:4]
            m = date_value[4:6]
            d = date_value[6:8]
            date_value = d + "/" + m + "/" + y
            date_value = time.strptime(date_value, '%d/%m/%Y') 
            return True
        else:
            if len(date_value) > 0:
                if len(date_value) != 8:
                    return False
                y = date_value[0:4]
                m = date_value[4:6]
                d = date_value[6:8]
                date_value = d + "/" …
Run Code Online (Sandbox Code Playgroud)

python multithreading

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

如何摆脱URL中的"%20"代码(django)

我正在使用django 1.3并进行一些模板继承./static/离开主页后,我的设置路径似乎有问题.问题是,当我加载从base.html继承的home.html时,CSS和Image链接工作正常.但是一旦我转到额外的URL(在这种情况下是vehicle.html),css和图像就会丢失,并出现以下错误:

控制台错误

"GET /static/%20/static/images/logo_2.jpg HTTP/1.1" 404 1771
"GET /static/%20/static/css/default.css HTTP/1.1" 404 1765
Run Code Online (Sandbox Code Playgroud)

查看页面源代码

<link rel="stylesheet" type="text/css" href="/static/ /static/css/default.css">
<link rel="stylesheet" type="text/css" href="/static/ /static/css/default.css">
Run Code Online (Sandbox Code Playgroud)

看起来有些空间出现在某个地方.另外,从vehilce.html文件中,页面源显示它向/static/url 添加额外的空间.我哪里可能出错?请参阅下面的文档:

settings.py

STATIC_ROOT = 'D:/dev/workspace/vehicle_request/vehicle_request/mvmanager/static/'
STATIC_URL = '/static/'
Run Code Online (Sandbox Code Playgroud)

urls.py

urlpatterns = patterns('',
                   url(r'^$', home_page),
                   (r'^admin/', include(admin.site.urls)),
                   (r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}), #Not in use in my code yet
                   (r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_ROOT}),
                   (r'^vehicle/', vehicle),
                   (r'^driver/', driver),
Run Code Online (Sandbox Code Playgroud)

base.html文件

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/static/css/default.css">
<title>{% block title %}{% …
Run Code Online (Sandbox Code Playgroud)

html django django-templates

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

具有一对一关系的模型的 DRF 序列化程序

鉴于具有一对一关系的 Django 模型,如何设置 Django Rest 框架序列化程序和视图,以便 API 消费者以现金支付和支票支付的端点包括支付模型并允许所有 CRUD 功能?

我试过在这里关注这个问题,但我似乎无法复制该功能。

楷模

class Payment(models.Model):
    """
    Payment Log
    """
    merchant = models.ForeignKey(Entity, on_delete=models.CASCADE, related_name="%(app_label)s_%(class)s_merchant")
    customer = models.ForeignKey(Entity, on_delete=models.CASCADE, related_name="%(app_label)s_%(class)s_customer")
    payment_method = models.ForeignKey(PaymentMethod, on_delete=models.CASCADE)
    trx_amount = models.DecimalField(max_digits=10, decimal_places=3)

class PaymentCash(models.Model):
    """
    Cash payments
    """
    payment = models.OneToOneField(Payment, on_delete=models.CASCADE, primary_key=True)
    date_paid = models.DateField()
    # Other fields

class PaymentCheque(models.Model):
    """
    Cheque deposits
    """
    payment = models.OneToOneField(Payment, on_delete=models.CASCADE, primary_key=True)
    cheque_number = models.CharField(max_length=50)
    # Other fields
Run Code Online (Sandbox Code Playgroud)

示例视图

class PaymentCashViewSet(ListCreateRetrieveUpdateViewSet):
    """
    Cash payment …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

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

对于 RediSearch,创建单个索引还是多个索引更好?

我在多租户应用程序中使用RediSearch构建索引,该应用程序具有:

  • 150,000 名租户
  • 每个租户平均拥有 3,500 个客户
  • 每个客户有 10 个字段将被添加到索引中
  • 所有字段都是TextFields.

问题是,在这种情况下,最佳实践(性能、内存/存储、灵活性)是什么?

我应该创建一个customer_index带有tenant_code字段的字段来帮助识别哪些数据属于哪个租户,还是应该创建一个租户特定的索引?

根据我目前的经验和理解,租户特定的索引意味着许多索引但其中的数据较少,它还可以让我灵活地为特定租户删除和重新创建索引?

在 Python 中,代码如下:

单一客户索引

client = Client(`customer_index`)
client.create_index(
            [
                TextField('tenant_code'), TextField('last_name'), TextField('first_name'),
                TextField('other_name'), 
            ]
        )   
Run Code Online (Sandbox Code Playgroud)

租户特定客户索引

client = Client(`tenant_code_customer_index`)
client.create_index(
            [
                TextField('last_name'), TextField('first_name'), TextField('other_name'), 
            ]
        )
Run Code Online (Sandbox Code Playgroud)

performance search redis redisearch

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

pyschools:网站给出了错误的答案?(主题2,问题7)

我是python的新手!做了我的学习,经历了几本书,现在尝试了学校的挑战.成功完成变量和数据类型,但主题2(函数)的问题7给了我地狱.

我正在使用Eclipse和Python(版本3.2).在我的日食中,我得到答案100,51和525.这些是pyschools所期望的答案,但它表明我的函数返回100,0和500.

这是一个问题(希望我可以在这里发布!):
写一个函数百分比(值,总数),它接受两个数字作为参数,并返回百分比值作为整数.
以下是我的功能

    def percent (value, total):
        a = value
        b = total
        return(int((a / b) * 100))
    percent(70, 70)
    percent(46, 90)
    percent(63, 12)
Run Code Online (Sandbox Code Playgroud)

谁能告诉我学校真正想要我做什么或哪里出错了?

谢谢!

python

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

如何使用 Cerberus 返回自定义规则名称/错误代码?

正在验证.csv文件,我想以用户习惯的格式给出验证结果。为了使用Cerberus,我让用户在文件中定义验证规则.yaml。

架构.yaml

Rules:
 Rule1:
  maxlength: 10

 Rule2:
  allowed: ["MO", "TU", "WE", "TH", "FR", "SA", "SU"]

 Rule3:
  required: True
Run Code Online (Sandbox Code Playgroud)

然后,我将这些规则映射到 CSV 文件中适用的列。

csv_fields.yaml

Fields:
 1:
  rules:
   - Rule1
   - Rule2

 2:
  rules:
   - Rule2
   - Rule3

 3:
  rules:
   - Rule1
   - Rule3
Run Code Online (Sandbox Code Playgroud)

样本文件.csv

下面是一个包含三列的示例文件:first_name、day_of_week和is_employed。

Peter, XX, True
Run Code Online (Sandbox Code Playgroud)

为了使用 Cerberus 进行验证,我将文档密钥rules中定义的内容与文件中的进行交叉引用。这很容易做到,因为文件在 python 中以键值格式读取为字典。rulescsv_fields.yamlRulesschema.yaml.yaml

我的问题

在上面的示例数据中,cerberus 会抛出错误'day_of_week': ['unallowed value XX'],但用户不知道什么规则触发了此错误。

我期待告诉用户的是,该错误unallowed …

python validation cerberus

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