小编dre*_*mac的帖子

MySQL"Group By"和"Order By"

我希望能够从电子邮件表中选择一堆行,并通过发件人对它们进行分组.我的查询如下所示:

SELECT 
    `timestamp`, `fromEmail`, `subject`
FROM `incomingEmails` 
GROUP BY LOWER(`fromEmail`) 
ORDER BY `timestamp` DESC
Run Code Online (Sandbox Code Playgroud)

查询几乎按我的意愿运行 - 它选择通过电子邮件分组的记录.问题是主题和时间戳不对应于特定电子邮件地址的最新记录.

例如,它可能会返回:

fromEmail: john@example.com, subject: hello
fromEmail: mark@example.com, subject: welcome
Run Code Online (Sandbox Code Playgroud)

当数据库中的记录是:

fromEmail: john@example.com, subject: hello
fromEmail: john@example.com, subject: programming question
fromEmail: mark@example.com, subject: welcome
Run Code Online (Sandbox Code Playgroud)

如果"编程问题"主题是最新的,那么在分组电子邮件时如何让MySQL选择该记录呢?

mysql sql group-by sql-order-by aggregate-functions

92
推荐指数
5
解决办法
19万
查看次数

从vim执行的命令无法识别bash命令别名

我在mac上使用bash,其中一个别名是这样的

alias gitlog='git --no-pager  log -n 20 --pretty=format:%h%x09%an%x09%ad%x09%s --date=short --no-merges'
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做

 :! gitlog
Run Code Online (Sandbox Code Playgroud)

我明白了

/bin/bash: gitlog: command not found 
Run Code Online (Sandbox Code Playgroud)

我知道我可以在我的.gitconfig中添加这样的别名

[alias]
    co = checkout
    st = status
    ci = commit
    br = branch
    df = diff
Run Code Online (Sandbox Code Playgroud)

但是,我不想将所有bash别名添加到.gitconfig.那不是干.

有更好的解决方案吗?

vim bash alias

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

替换从左外部联接返回的默认空值

我有一个Microsoft SQL Server 2008查询,它使用左外连接从三个表返回数据.很多时候,第二个和第三个表中没有数据,所以我得到一个null,我认为这是左外连接的默认值.有没有办法替换select语句中的默认值?我有一个解决方法,我可以选择一个表变量,但感觉有点脏.

SELECT iar.Description, iai.Quantity, iai.Quantity * rpl.RegularPrice as 'Retail', 
iar.Compliance FROM InventoryAdjustmentReason iar
LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
WHERE iar.StoreUse = 'yes'
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我希望Quantity和RegularPrice默认为零.

mysql sql t-sql sql-server sql-server-2008

88
推荐指数
3
解决办法
10万
查看次数

从Python中的相对路径导入

我有一个用于我的客户端代码的文件夹,一个用于我的服务器代码的文件夹,以及一个用于它们之间共享的代码的文件夹

Proj/
    Client/
        Client.py
    Server/
        Server.py
    Common/
        __init__.py
        Common.py
Run Code Online (Sandbox Code Playgroud)

如何从Server.py和Client.py导入Common.py?

python import relative-path shared-libraries python-3.x

86
推荐指数
5
解决办法
12万
查看次数

我应该总是在`except`语句中指定一个异常类型吗?

使用PyCharm IDE时,except:无异常类型的使用会触发IDE提醒此异常子句Too broad.

我应该忽略这个建议吗?或者是Pythonic总是具体的异常类型?

python exception pep8

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

Python中的open和codecs.open之间的区别

有两种方法可以在Python中打开文本文件:

f = open(filename)
Run Code Online (Sandbox Code Playgroud)

import codecs
f = codecs.open(filename, encoding="utf-8")
Run Code Online (Sandbox Code Playgroud)

何时比较codecs.openopen

python unicode codec

84
推荐指数
6
解决办法
6万
查看次数

列出python中的目录树结构?

我知道我们可以使用os.walk()列出目录中的所有子目录或所有文件.但是,我想列出完整的目录树内容:

  • 子目录1:
    • FILE11
    • file12
    • 子目录11:
      • file111
      • file112
  • 子目录2:
    • file21
    • 子目录21
    • 子目录22
      • 子子目录221
        • 文件2211

如何在Python中实现这一目标?

python traversal directory-structure

84
推荐指数
9
解决办法
9万
查看次数

是否有YAML语法用于共享列表或地图的一部分?

所以,我知道我可以这样做:

sitelist: &sites
  - www.foo.com
  - www.bar.com

anotherlist: *sites
Run Code Online (Sandbox Code Playgroud)

并拥有sitelistanotherlist都包含www.foo.comwww.bar.com.不过,我真正想要的是anotherlist包含www.baz.com,而无需重复www.foo.comwww.baz.com.

这样做会在YAML解析器中出现语法错误:

sitelist: &sites
  - www.foo.com
  - www.bar.com

anotherlist: *sites
  - www.baz.com
Run Code Online (Sandbox Code Playgroud)

只使用锚和别名,似乎不可能做我想要的而不添加另一级子结构,例如:

sitelist: &sites
  - www.foo.com
  - www.bar.com

anotherlist:
  - *sites
  - www.baz.com
Run Code Online (Sandbox Code Playgroud)

这意味着此YAML文件的使用者必须了解它.

有一种纯粹的YAML方式做这样的事情吗?或者我是否必须使用一些后YAML处理,例如实现变量替换或自动提升某些类型的子结构?我已经在进行那种后处理来处理其他一些用例,所以我并不完全厌恶它.但我的YAML文件将由人类编写,而不是由机器生成,因此我希望尽量减少用户在标准YAML语法之上需要记忆的规则数量.

我也希望能够用地图做类似的事情:

namedsites: &sites
  Foo: www.foo.com
  Bar: www.bar.com

moresites: *sites
  Baz: www.baz.com
Run Code Online (Sandbox Code Playgroud)

我有一个搜索YAML规范,但找不到任何东西,所以我怀疑答案只是"不,你不能这样做".但是,如果有人有任何想法会很棒.


编辑:由于没有答案,我假设没有人发现我在YAML规范中没有的任何东西,并且这不能在YAML层完成.所以我打开了一个问题,想要对YAML进行后处理以帮助解决这个问题,以防将来有人发现这个问题.

arrays dictionary yaml cross-reference

81
推荐指数
5
解决办法
5万
查看次数

为什么使用sys.path.append(path)而不是sys.path.insert(1,path)?

编辑:基于Ulf Rompe的注释,重要的是你使用"1"代替"0",否则你将破坏sys.path.

我已经做了很长一段时间的python(超过一年),我总是很困惑,为什么人们建议你使用sys.path.append()而不是sys.path.insert().让我来证明一下.

假设我正在开发一个名为PyWorkbooks的模块(安装在我的计算机上),但我同时处理一个包含PyWorkbooks的不同模块(比方说PyJob).当我正在使用PyJob时,我发现PyWorkbooks中的错误正在纠正,所以我想导入一个开发版本.

有两种方法可以同时工作(例如,我可以将PyWorkbooks项目放在PyJob中),但有时我仍然需要使用路径.但是,我不能简单地对sys.path.append()PyWorkbooks所在的文件夹执行操作.为什么?因为python会首先找到我安装的PyWorkbooks!

这就是你必须做一个sys.path.insert(1,path_to_dev_pyworkbooks)的原因

综上所述:

sys.path.append(path_to_dev_pyworkbooks)
import PyWorkbooks # does NOT import dev pyworkbooks, imports installed one
Run Code Online (Sandbox Code Playgroud)

要么:

sys.path.insert(1, path_to_dev_pyworkbooks) # based on comments you should use **1 not 0**
import PyWorkbooks # imports correct file
Run Code Online (Sandbox Code Playgroud)

这对我来说已经引起了一些困扰,如果我们(作为一个社区)开始推荐sys.path.insert(1, path),我真的很喜欢它,好像你是手动插入一条路径我认为可以说这是你想要的路径用!

或者我有什么不对劲?这个问题有时会困扰我,我希望它在公开场合!

python path python-import pythonpath

81
推荐指数
3
解决办法
11万
查看次数

如何合并YAML数组?

我想在YAML中合并数组,并通过ruby加载它们 -

some_stuff: &some_stuff
 - a
 - b
 - c

combined_stuff:
  <<: *some_stuff
  - d
  - e
  - f
Run Code Online (Sandbox Code Playgroud)

我想将组合数组作为 [a,b,c,d,e,f]

我收到错误:在解析块映射时没有找到预期的键

如何在YAML中合并数组?

yaml list data-structures

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