我希望能够在使用SQLAlchemy创建表时自动加载数据.
在django中,您可以使用fixtures,在创建表时,可以使用数据轻松预填充数据库.这个我觉得很有用,特别是当你有基本的"查找"表时,例如product_type,student_type只包含几行甚至是一个像货币一样的表,这些货币将加载世界上的所有货币而不必一次又一次地键入它们.你摧毁你的模特/班级.
我目前的应用程序不使用django.我有SQLAlchemy.我怎样才能实现同样的目标?我希望应用程序知道数据库是第一次创建,因此它会使用数据填充一些表.
我的普通脚本在 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) 如何清除共享的多进程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对象的文档不是很清楚()
我在 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函数,在"正常"模式下工作正常,但是当我在一个线程函数中运行它时会抛出一个错误.
功能
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) 我正在使用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) 鉴于具有一对一关系的 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) 我在多租户应用程序中使用RediSearch构建索引,该应用程序具有:
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) 我是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)
谁能告诉我学校真正想要我做什么或哪里出错了?
谢谢!
正在验证.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 ×7
django ×3
sqlalchemy ×2
celery ×1
cerberus ×1
html ×1
performance ×1
python-3.x ×1
redis ×1
redisearch ×1
search ×1
validation ×1