小编Uri*_*Uri的帖子

MySQL 中的 GROUP_CONCAT - 如何包含不同的值?

我有两张用 UNION ALL 查询的表 - 一张用于 Android,一张用于 iPhone。每个表都有自己的设备字段(“android”或“iphone”)。

我使用GROUP_CONCAT(DISTINCT `device` ORDER BY `device` SEPARATOR ', ') AS `device`了几次,每次当我按另一列(例如日期、用户 ID 等)分组时。我也使用相同的 GROUP_CONCAT 来计算总数。

问题是,当我按日期分组时,我选择设备的 GROUP_CONCAT(不是直接设备),因为有些日期同时购买了 Android 和 iPhone。选择还包括 WHERE 或 HAVING 以让用户按特定日期、加入日期的用户数量等进行过滤。当我计算总数时,我在设备上有 GROUP_CONCAT,它本身就是一个 GROUP_CONCAT 函数。结果可能类似于“android, android, iphone, iphone”,因为有只有 Android 的日期、只有 iPhone 的日期和两者都有的日期(其他查询只能有这些选项中的一个或一些)。我正在寻找一种方法将此结果转换为“android, iphone”。

目前我正在使用一个 PHP 函数:

    private function get_device_human_string($fp_device_computer_string)
    {
        $devices= array(
            'android' => 'Android',
            'iphone' => 'iPhone'
        );
        $device_computer_string= strtolower($fp_device_computer_string);
        $ret= array();
        foreach ($devices as $device_key => $device_human_string)
        {
            if (strpos($device_computer_string, $device_key) !== false)
            {
                $ret[]= $device_human_string;
            } …
Run Code Online (Sandbox Code Playgroud)

mysql sql distinct group-concat

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

如何在 Django 中订购反向外键?

我们使用的是 Django 1.4。我们有一个类A,它有一个History与之相关的类。可以有许多与 的任何单个对象相关的 History 对象A

该类History具有其他类的外键,例如BusinessUnit.

我想A最后一个历史对象(如果有)对对象进行排序(按 排序History.logged_at)。

我尝试过order_by('history__business_unit'),但它不能正常工作。是否可以使用数据库进行这样的排序,还是必须使用Python进行排序?如果可能的话,我更喜欢使用数据库进行排序。

python sorting django

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

如何在XPath中选择空元素?

我们选择使用Django 1.4测试和Selenium的元素,如下所示:

self.assertEqual(1, len(self.selenium.find_elements_by_xpath("//a[@href='#'][@class='button save-as'][@title='Save As...'][text()='Save As']")))
Run Code Online (Sandbox Code Playgroud)

(该类继承自LiveServerTestCase).

问题是有时会有没有文本的元素,如果我们选择[text()='']它失败(len为0).如何选择没有文字的元素?

更新:因为[text()='']没有用,我不得不断言两行来断言没有文字:

self.assertEqual(1, len(self.selenium.find_elements_by_xpath("//a[@href='#'][@class='button properties'][@title='Properties']")))
self.assertEqual("", self.selenium.find_element_by_xpath("//a[@href='#'][@class='button properties'][@title='Properties']").text)
Run Code Online (Sandbox Code Playgroud)

现在我可以断言同一行:

self.assertEqual(1, len(self.selenium.find_elements_by_xpath("//a[@href='#'][@class='button properties'][@title='Properties'][not(text())]")))
Run Code Online (Sandbox Code Playgroud)

selenium xpath

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

模型使用时覆盖 Django 中的设置

我们将 Django 用于Speedy Net 和 Speedy Match(目前为 Django 2.1)。我们的一些设置被模型使用。例如:

class USER_SETTINGS(object):
    MIN_USERNAME_LENGTH = 6
    MAX_USERNAME_LENGTH = 40

    MIN_SLUG_LENGTH = 6
    MAX_SLUG_LENGTH = 200

    # Users can register from age 0 to 180, but can't be kept on the site after age 250.
    MIN_AGE_ALLOWED_IN_MODEL = 0  # In years.
    MAX_AGE_ALLOWED_IN_MODEL = 250  # In years.

    MIN_AGE_ALLOWED_IN_FORMS = 0  # In years.
    MAX_AGE_ALLOWED_IN_FORMS = 180  # In years.

    MIN_PASSWORD_LENGTH = 8
    MAX_PASSWORD_LENGTH = 120

    MAX_NUMBER_OF_FRIENDS_ALLOWED = 800

    PASSWORD_VALIDATORS = [ …
Run Code Online (Sandbox Code Playgroud)

python django overriding django-settings

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

Django-如何覆盖每个语言环境的默认日期格式?

我们将Django 1.11用于Speedy Net。我想重写的默认值DATE_FORMAT,并MONTH_DAY_FORMAT在希伯来语中英文,但保留默认值(或重新定义它们)。因此,它们将与Django的默认值不同并且也不相同。用英语,我们将有:

DATE_FORMAT = 'j F Y'
MONTH_DAY_FORMAT = 'j F'
YEAR_FORMAT = 'Y'
Run Code Online (Sandbox Code Playgroud)

在希伯来语中:

DATE_FORMAT = 'j ?F Y'
MONTH_DAY_FORMAT = 'j ?F'
Run Code Online (Sandbox Code Playgroud)

(并且YEAR_FORMAT将是相同的)。

该模板当前如下所示:

{% if can_view_profile and user.date_of_birth %}
    {% if can_view_dob_day_month or can_view_dob_year %}
        <tr>
            <th>{% if can_view_dob_day_month %}{% trans 'Birth Date' %}{% elif can_view_dob_year %}{% trans 'Birth Year' %}{% endif %}</th>
            <td>
                {% if can_view_dob_day_month and can_view_dob_year %}
                    {{ user.date_of_birth|date:settings.DATE_FORMAT }}
                {% elif can_view_dob_day_month %}
                    {{ …
Run Code Online (Sandbox Code Playgroud)

python django

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

如何在Windows上安装Python 3.9.14?

Python 3.9.14 已于 2022 年 9 月 6 日发布。正如我在https://www.python.org/downloads/release/python-3914/上看到的:

According to the release calendar specified in PEP 596, Python 3.9 is now in the "security fixes only" stage of its life cycle: the 3.9 branch only accepts security fixes and releases of those are made irregularly in source-only form until October 2025. Python 3.9 isn't receiving regular bug fixes anymore, and binary installers are no longer provided for it. Python 3.9.13 was the last full bugfix release of …

python windows python-3.x python-3.9

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

如何防止tar覆盖现有存档?

我使用该命令在Ubuntu/Linux上每天备份文件几次tar -cpvzf ~/Backup/backup_file_name.tar.gz directory_to_backup/(文件名包含YYYY-MM-DD格式的日期和a到z的字母 - a是此日期的第一个备份等)但是我想创建一个新的存档,如果它已经存在,则不会覆盖该存档.如何防止tar覆盖现有存档?如果存档存在,我希望tar退出而不做任何事情(如果可能,显示错误消息).

linux shell tar

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

我们如何才能更快地进行Django测试?

我们在Ubuntu 12.04上使用Django 1.4和PostgreSQL.我们有很多测试,问题是运行测试非常慢,我认为因为每次测试都是从头开始创建数据库.我希望通过在内存中使用数据库(而不是硬盘)来加快测试速度.我该怎么做?你有任何链接或教程吗?

django postgresql django-testing in-memory-database django-tests

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

如何在React中创建带有for循环的选择框?

我是React和Redux的新手,我想创建一个Chess Queens的React/Redux实现.我想创建常量,例如MAX_BOARD_SIZE = 50,并创建一个包含从1到1的所有数字的选择框MAX_BOARD_SIZE.更改电路板尺寸时,电路板尺寸将自动更改.但我不能在我的SelectBoardSize渲染函数中创建for循环.这是我的代码:

import React from 'react';

class SelectBoardSize extends React.Component {
    render() {
        return (
            <select className="select-board-size">
                for (let i = 1; i <= 50; i++) {
                   <option value="{i}">{i}</option>
                }
            </select>
        );
    }
}

export default SelectBoardSize;
Run Code Online (Sandbox Code Playgroud)

而且我也不知道在哪里定义常量以及如何在这个类中使用这个值?常量应该在另一个文件中定义,例如constants.jsx,在此类文件之外的某个位置.

reactjs redux

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

如何指定 Django 表单中的字段顺序?

我们正在使用 Django 2.2,我想升级到 Django 3.0。我们有一个 mixin(写于 2017 年),可以向表单添加字段:

class LocalizedFirstLastNameMixin(object):
    def __init__(self, *args, **kwargs):
        self.language_code = kwargs.pop('language_code', 'en')
        super().__init__(*args, **kwargs)
        for loc_field in reversed(self.get_localized_fields()):
            self.fields[loc_field] = User._meta.get_field(loc_field).formfield()
            self.fields[loc_field].required = True
            self.fields.move_to_end(loc_field, last=False)
            self.initial[loc_field] = getattr(self.instance, loc_field, '')
Run Code Online (Sandbox Code Playgroud)

self.get_localized_fields()返回('first_name_en', 'last_name_en')(按此顺序)英语版本,或本地化为我们正在使用的当前语言的相同版本。

该 mixin 用作继承自以下形式的基类之一ModelForm

class RegistrationForm(AddAttributesToFieldsMixin, CleanEmailMixin, CleanNewPasswordMixin, CleanDateOfBirthMixin, LocalizedFirstLastNameMixin, forms.ModelForm):
    ....

class ProfileForm(AddAttributesToFieldsMixin, CleanDateOfBirthMixin, LocalizedFirstLastNameMixin, forms.ModelForm):
    ....
Run Code Online (Sandbox Code Playgroud)

它适用于 Django 2.2 版本。但是当我升级到3.0时,我收到以下错误消息:

AttributeError: 'dict' object has no attribute 'move_to_end'

该函数的信息:

Move an existing element to the end …

python django django-forms modelform django-3.0

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

如何使用Google App Engine运行Selenium测试?

我们希望使用Google App Engine每4小时使用cron运行Selenium测试(稍后我们可能会更改此小时数).我们希望收到一封包含测试结果的电子邮件.我想知道我是如何创建第一个测试的.我想通过我们的Google Chrome扩展程序测试https://inbox.google.com/ - 进入我们的网站,登录,点击"保存更改",安装扩展程序,然后输入https://inbox.google.com/,登录并检查扩展是否有效.问题是我不知道如何设置测试,我是否必须使用URL设置它们,我该怎么做?我是否必须为每个测试提供不同的URL,或者我可以使用一个URL运行所有测试吗?以下是我从http://app.crossbrowsertesting.com/selenium/run收到的代码:

# Please visit http://selenium-python.readthedocs.org/en/latest/index.html for detailed installation and instructions

import unittest
from selenium import webdriver

class SeleniumCBT(unittest.TestCase):
    def setUp(self):
        caps = {}

        caps['name'] = 'Chrome Inbox Test'
        caps['build'] = '1.0'
        caps['browser_api_name'] = 'Chrome39x64'
        caps['os_api_name'] = 'Win8.1'
        caps['screen_resolution'] = '1280x1024'
        caps['record_video'] = 'true'
        caps['record_network'] = 'true'
        caps['record_snapshot'] = 'true'

        #start the remote browser on our server
        self.driver = webdriver.Remote(
            desired_capabilities=caps,
            command_executor="http://[username]:[password]@hub.crossbrowsertesting.com:80/wd/hub"
        )

        self.driver.implicitly_wait(20)

    def test_CBT(self):

        #load the page url
        print('Loading …
Run Code Online (Sandbox Code Playgroud)

python cron google-app-engine selenium

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

如何在bash中将错误重定向到/ dev/null?

我们每天运行Selenium测试来测试我们的网站和扩展.我写了一个脚本(根据这个问题)来计算传递和失败测试的数量.这是脚本:

#!/bin/bash

today=`TZ='Asia/Tel_Aviv' date +"%Y-%m-%d"`
yesterday=`TZ='Asia/Tel_Aviv' date +"%Y-%m-%d" -d "yesterday"`

...

print_test_results()
{
    declare -i passed_tests=0
    declare -i failed_tests=0
    declare -i total_tests=0
    log_suffix="_${file_name}.log"
    yesterday_logs="${log_prefix}${yesterday}_[1,2]*${log_suffix}"
    today_logs="${log_prefix}${today}_0*${log_suffix}"
    for temp_file_name in $yesterday_logs $today_logs ; do
        total_tests+=1
        if grep -q FAILED "$temp_file_name" ; then
            failed_tests+=1
        elif grep -q OK "$temp_file_name" ; then
            passed_tests+=1
        else
            failed_tests+=1
        fi
    done
    echo "<tr>"
    echo "<td>$test_name - $today</td>"
    if [ $passed_tests = "0" ]; then
        echo "<td>$passed_tests passed</td>"
        echo "<td><span style=\"color: red;\">$failed_tests failed</span></td>"
    else
        echo "<td><span style=\"color: …
Run Code Online (Sandbox Code Playgroud)

bash

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