小编alj*_*alj的帖子

从表字段中选择不同的值

我正在努力绕过Django的ORM.我想要做的是在我的表格中的字段中获取不同值的列表....相当于以下之一:

SELECT DISTINCT myfieldname FROM mytable
Run Code Online (Sandbox Code Playgroud)

(或者)

SELECT myfieldname FROM mytable GROUP BY myfieldname
Run Code Online (Sandbox Code Playgroud)

在使用原始sql之前,我至少喜欢用Django方式做.例如,使用表格:

id,街道,城市

1,赫尔大街

2,其他街,赫尔

3,Bibble Way,莱斯特

4,另一种方式,莱斯特

5,高街,Londidium

我想得到:

船体,莱斯特,Londidium.

django django-orm django-queryset query-performance

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

为Django表单选择小部件添加其他选项

我有一个表单,我用它来构建一个queryeset过滤器.表单从数据库中提取项目状态选项.但是,我想添加其他选项,例如"所有实时促销"......所以选择框看起来像是这样的:

  • 所有促销活动*
  • 所有现场促销活动*
  • 草案
  • 提交
  • 公认
  • 报道
  • 经过
  • 所有已完成的促销活动*
  • 关闭
  • 取消

这里'*'是我想要添加的,其他来自数据库.

这可能吗?

class PromotionListFilterForm(forms.Form):
    promotion_type = forms.ModelChoiceField(label="Promotion Type", queryset=models.PromotionType.objects.all(), widget=forms.Select(attrs={'class':'selector'}))
    status = forms.ModelChoiceField(label="Status", queryset=models.WorkflowStatus.objects.all(), widget=forms.Select(attrs={'class':'selector'})) 
    ...
    retailer = forms.CharField(label="Retailer",widget=forms.TextInput(attrs={'class':'textbox'}))
Run Code Online (Sandbox Code Playgroud)

django django-forms

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

如何在sqlite的文本字段中删除回车?

我有一个超过400k记录的sqlite数据库.我刚刚发现一些文本字段中有回车符,我想清除它们.我想复制原始表的结构,然后执行以下操作:

INSERT INTO large_table_copy 
SELECT date, other_fields, replace(dirty_text_field,XXX,"") 
FROM large_table
Run Code Online (Sandbox Code Playgroud)

XXX回车的代码在哪里.事实并非如此\n.但我不知道它是什么.

sqlite carriage-return

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

Apache/Windows/mod_wsgi上有多个django站点 - win32问题

我有两个django站点使用相同的数据库并共享一些代码.主要的父网站是员工和承包商的外联网,而第二个网站则向我们的一些合作伙伴公开了一些数据.

我已设法设置网站工作,但发现如果我启动Apache并进入主站点,那么合作伙伴网站将无法工作,返回"内部服务器错误".如果我重新启动并进入合作伙伴站点,那么主站点将无法运行.

所以我猜他们在资源方面存在冲突.

服务器日志(见下)显示它是win32/lib/pywintypes.py模块第114行的问题.在其他地方,建议注释掉这些行(见下文).所以我试过这个并且它有效.

我真的不明白代码中发生了什么,以及评论它是否会在以后引起我的问​​题.所以问题是:

还有其他事情可能导致这种情况吗?这个软糖"安全"吗?

# py2k and py3k differences:
# On py2k, after doing "imp.load_module('pywintypes')", sys.modules
# is unchanged - ie, sys.modules['pywintypes'] still refers to *this*
# .py module - but the module's __dict__ has *already* need updated
# with the new module's contents.
# However, on py3k, sys.modules *is* changed - sys.modules['pywintypes']
# will be changed to the new module object.
# SO: * on py2k don't need to update any globals.
#     * on py3k we …
Run Code Online (Sandbox Code Playgroud)

apache django mod-wsgi pywin32

7
推荐指数
1
解决办法
1995
查看次数

如何存储双向关系

我正在编写一些代码来查找数据库中重复的客户详细信息.我将使用Levenshtein距离.

但是,我不确定如何存储关系.我一直在使用数据库,但从未遇到过这种情况,并想知道是否有人可以指出我正确的方向.

令我困惑的是如何存储关系的双向性质.

我已经开始在下面提供一些示例,但想知道是否存在存储此类数据的最佳实践,

示例数据

id,地址

001,5 Main Street
002,5 Main St.
003,5 Main Str
004,6 High Street
005,7 Low Street
006,7 Low St

建议1

customer_id1,customer_id2,relationship_strength
001,002 0.74
001,003,0.77
002,003,0.76
005,006,0.77

对这种方法不满意,因为它推断出customer_id1与customer_id2之间的单向关系.当然,除非我双向包含所有关系,但这会使处理时间和表的大小加倍.

例如,需要包括:002,001,0.74

建议2

CUSTOMER_ID,GROUPING_ID
001,1
002,1
003,1
005,2
006,2

database database-design deduplication data-structures

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

真空后SQLite数据库变大了

作为刷新我的sqlite数据库中的一些客户记录的一部分,我删除了一堆记录,然后从导入的表中导入了一些记录.然后我删除了临时表并做了一个真空.在抽真空之前,文件大约是6mb,然后在抽真空之后是10mb.我做了一个完整性检查,似乎没问题.我做了另一个测试,如果我没有真空,文件大小仍然是大约6mb.

难道我做错了什么?

(我一直在使用SQLite Manager进行真空处理.但是,当使用SQLiteSpy时,它可以正常工作.所以它似乎是SQLite Manager的一个问题.可能对有类似问题的人有用)

sqlite

6
推荐指数
1
解决办法
1098
查看次数

具有可选信息的多对多Multiplechoice表单

在我的应用程序的早期版本中,我与帐户和俱乐部之间存在多对多的关系.在我的AccountForm中,我使用了"club = forms.MultipleChoiceField(widget = CheckboxSelectMultiple)"来使用户能够从俱乐部的完整列表中进行选择.

▢足球

▢曲棍球

▢网球

▢游泳

但是,我现在需要包含一个可选字段,如果有的话,可以包含其成员资格引用号.所以像

▢足球________

▢曲棍球________

▢网球________

▢游泳________

我意识到我必须使用一个through模型,但现在我正在努力复制我以前的多选样式布局.

a)我认为我需要使用内联formset但基于直通表,所以我需要一个formset工厂来为每个俱乐部创建表单.我不知道该怎么做.线索?

b)包含一个复选框以反映该俱乐部的成员资格.所以可能是一个布尔字段,其中隐藏字段指示了俱乐部的ID,然后是一些自定义工作清理和保存功能.

这看起来是对的,还是有更简单的方法?

class Account(models.Model):
    name = models.CharField(max_length=20)
    address_street01 = models.CharField(max_length=50)
    address_pc = models.CharField(max_length=10)
    address_city = models.CharField(max_length=50)

class Club(models.Model):
    name = models.CharField(max_length=30, unique=True)

class Membership(models.Model):
    club = models.ForeignKey(Club)
    account = models.ForeignKey(Account)
    membership_ref = models.CharField(max_length=50, blank=True)
Run Code Online (Sandbox Code Playgroud)

django django-templates django-models django-forms

6
推荐指数
1
解决办法
488
查看次数

转义非ASCII字符(或如何删除BOM?)

我需要从Access记录集创建一个ANSI文本文件,输出到JSON和YAML.我可以写文件,但输出是原始字符,我需要逃避它们.例如,变音符号O(ö)应为"\ u00f6".

我认为将文件编码为UTF-8会起作用,但事实并非如此.但是,再次查看文件编码,如果你写"没有BOM的UTF-8"那么一切正常.

有谁知道怎么做

a)在没有BOM的情况下将文本写为UTF-8,或b)用ANSI写入但是转义非ASCII字符?

Public Sub testoutput()

Set db = CurrentDb()

str_filename = "anothertest.json"
MyFile = CurrentProject.Path & "\" & str_filename
str_temp = "Hello world here is an ö"

fnum = FreeFile

Open MyFile For Output As fnum
Print #fnum, str_temp
Close #fnum

End Sub
Run Code Online (Sandbox Code Playgroud)

ms-access encoding vba

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

在 pyWin32 中设置自动过滤器的标准

我可以使用 pyWin32 设置自动过滤器,但我想知道是否可以设置默认过滤器以及语法是什么。

例如,我想在年份列上设置过滤器并设置当前年份的默认值。

xl = Dispatch("Excel.Application") 
xl.Workbooks.Open(file_path) 
xl.ActiveWorkbook.Worksheets(sheetname).Range("A2:A6").AutoFilter(1)
xl.ActiveWorkbook.Close(SaveChanges=1)
Run Code Online (Sandbox Code Playgroud)

我在网上查看了有关 pywin32 和 Microsoft 站点的文档,但不知道如何将 MS 语法转换为 pywin32

Range("A2:A6").AutoFilter Field:=1, Criteria1:=rng.Value
Run Code Online (Sandbox Code Playgroud)

python excel pywin32

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

Django M2M带有一张大桌子

我有一个典型的M2M场景,促销活动与我们的零售商有关.但是我们有大量零售商(超过10k),因此我无法使用普通的多选小部件.

我打算做的是拥有一个带有"零售商"子页面的"活动"实例页面,该子页面上有一个表格,列出了当前与该活动相关的所有零售商.此外,每个零售商旁边都会有一个"删除"复选框,以便在必要时将其从列表中删除.(当然,我还有另一个搜索/结果页面,用户可以选择他们想要添加到列表中的零售商,但我相信我可以自己解决这个问题).

有人能指出我关于模型和模板工厂的正确方向,因为我不知道从哪里开始.直接操作app_activity_associated_retailers表似乎很明显,但我不认为我可以使用现有函数执行此操作.是否有这样做的模式.

class Activity(models.Model):
    budget = models.ForeignKey('Budget')
    activity_type = models.ForeignKey('ActivityType')
    amount = models.DecimalField(max_digits=8, decimal_places=2)
    associated_retailers = models.ManyToManyField('Retailer', related_name='associated_retailers')

class Retailer(models.Model):
    name = models.CharField(max_length=50)
    address01 = models.CharField(max_length=50)
    address02 = models.CharField(max_length=50, blank=True)
    postcode = models.CharField(max_length=5)
    city = models.CharField(max_length=20)
Run Code Online (Sandbox Code Playgroud)

django django-forms

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

"最后"标签不起作用

我有一个"促销"事件的查询集,它在模板中呈现.这些促销活动中的每一个也有一个或多个约会.我想要做的是显示第一次和最后一次约会的日期.

到目前为止,使用"第一个"标签工作.但是,使用"last"标记会导致:

TemplateSyntaxError异常值:呈现时捕获异常:不支持负索引.

这是模板脚本

{% for promotion in promotions%}
    {% with promotion.appointment_set.all as appointments %}
        {% with appointments|first as first_ap %}
            {{ first_ap.date|date }}
        {% endwith %}

        {% with appointments|last as last_ap %}
            {{ last_ap.date|date }}
        {% endwith %}
    {% endwith %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

django django-templates

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

查询中的可选连接(如果主表字段为null,则忽略连接)

我的预算类似于下面的示例,其中:

  • 一些预算是特定于人的,
  • 有些是针对整个团队的
  • 混合物,其中一些部分分配给特定的人,而其余部分分配给团队的其他成员.

我可以将预算链接到Summary_of_spend,但我需要做的是始终链接年份和预算类型,但仅限于预算中存在的人员.如果预算中没有人,则默认将该组的金额加在一起.

我如何创建一个为此做的连接?

(对不起,以前没有遇到过这样的事情,也不确定它的用途,更不用说如何解决了.顺便说一下,我正在使用SQLite.)

Budgets
YEAR, TYPE, PERSON, AMOUNT
2010, Sales, Bob, 1000
2010, Sales, John, 1000
2010, Sales, Fred, 1000
2010, Marketing, Null, 5000
2010, Special, Null, 3000
2010, Special, Bob, 1000
2011, Sales_budget, Bob, 1100
2011, Sales_budget, John, 1100
2011, Sales_budget, Fred, 1100
2011, Marketing, Null, 6000
2010, Special, Null, 3000
2010, Special, Bob, 1000

Spend
DATE, BUDGET, PERSON, AMOUNT
01/01/2010, Sales, Bob, 50
02/01/2010, Marketing, Bob, 100
...

Summary_of_spend
YEAR, BUDGET, PERSON, AMOUNT
2010, …
Run Code Online (Sandbox Code Playgroud)

sql sqlite

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

任务计划程序不会运行 python 脚本 (pywin32) 来打开 Excel。如何从 Pywin32 获取更多信息

我有一个在 Windows Server 2008 上运行的 Python 脚本。它打开一个电子表格并向电子表格添加一个过滤器行,将其关闭,然后将其压缩。主电子表格是使用 xlwt 创建的。我只使用 Pywin32,因为用户想要添加一个过滤器行。

手动执行此操作(即直接通过 Windows 资源管理器或命令行)时,它可以工作。但是,当通过 Task Schduler 手动触发脚本或让它在所需时间触发时,它不起作用。

“运行身份”用户是管理员。我已经检查以确保它以最高权限运行。

我通过将输出传输到日志文件来捕获错误消息。回溯显示:

File "C:\www\..\main\management\commands\excel_writer.py", line 183, in add_filter_control
    xl.Workbooks.Open(file_path)
File "<COMObject <unknown>>", line 8, in Open
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, u'Microsoft Office Excel', u'Die Open-Methode des Workbooks-Objektes konnte nicht ausgef\xfchrt werden.', u'C:\\Program Files\\Microsoft Office\\OFFICE11\\1031\\xlmain11.chm', 0, -2146827284), None)
Run Code Online (Sandbox Code Playgroud)

好的......这是德语,但它基本上说“无法执行工作簿打开方法”。

但是,我不知道为什么。有没有人有任何关于如何找出原因的提示?

干杯

ALJ

下面是一些代码和设置:

电子表格创建代码

...
w = xlwt.Workbook('UTF-8')
    worksheets = {} 

    data_formatting_dict = construct_data_formatting()

    for sheetref, sheetname, datasource, dataformat_ref in sheetlist:
        worksheets[sheetref] = w.add_sheet(sheetname) …
Run Code Online (Sandbox Code Playgroud)

python pywin32 scheduled-tasks

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