小编atl*_*lau的帖子

如何在 VSCode 中启用 Pylint?

我无法在 VSCode 中显示 pylint 错误。我全局安装了 pylint(sudo apt install pylint),我创建了 venv 并使用 pip 将它安装在那里,我在 VSCode 中选择了 pylint 作为 linter,启用它,运行它,它没有在我的文件中显示任何错误。如果我从命令行检查,它会在我的文件中显示许多错误。

这在早期有效,但现在在使用 snap 安装的 VSCode 1.46.1 和 1.45.1 版上无效。

与 Microsoft 和 Jedi python 语言服务器的结果相同。

我在开发者控制台中找到了 pylint 命令:

~/Documents/work/python/.venv/bin/python ~/.vscode/extensions/ms-python.python-2020.6.89148/pythonFiles/pyvsc-run-isolated.py pylint --disable=all --enable=F,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,unused-wildcard-import,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode,E0001,E0011,E0012,E0100,E0101,E0102,E0103,E0104,E0105,E0107,E0108,E0110,E0111,E0112,E0113,E0114,E0115,E0116,E0117,E0118,E0202,E0203,E0211,E0213,E0236,E0237,E0238,E0239,E0240,E0241,E0301,E0302,E0303,E0401,E0402,E0601,E0602,E0603,E0604,E0611,E0632,E0633,E0701,E0702,E0703,E0704,E0710,E0711,E0712,E1003,E1101,E1102,E1111,E1120,E1121,E1123,E1124,E1125,E1126,E1127,E1128,E1129,E1130,E1131,E1132,E1133,E1134,E1135,E1136,E1137,E1138,E1139,E1200,E1201,E1205,E1206,E1300,E1301,E1302,E1303,E1304,E1305,E1306,E1310,E1700,E1701 --msg-template='{line},{column},{category},{symbol}:{msg}' --reports=n --output-format=text ~/Documents/work/python/micro.py 
Run Code Online (Sandbox Code Playgroud)

所以pylint确实被执行了!如果我从命令行像这样运行它,输出是:

Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)
Run Code Online (Sandbox Code Playgroud)

但如果我执行pylint micro.py我得到:

Your code has been rated at -2.50/10 (previous run: 10.00/10, -12.50)
Run Code Online (Sandbox Code Playgroud)

为什么 VSCode 使用该命令行?我现在正在测试没有 .pylintrc,但即使我有它,VSCode 也没有显示错误,只有命令行!但是我只是再次尝试,添加了一个 .pylintrc,现在由于某种原因,错误确实出现在编辑器中!

但这仅适用于 Jedi …

python pylint visual-studio-code

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

如何改进已经优化的查询需要18秒?

所以我有一个512mb内存的vps,以及一个像这样的MySQL表:

CREATE TABLE `table1` (
  `id` int(20) unsigned NOT NULL auto_increment,
  `ts` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `value1` char(31) collate utf8_unicode_ci default NULL,
  `value2` varchar(100) collate utf8_unicode_ci default NULL,
  `value3` varchar(100) collate utf8_unicode_ci default NULL,
  `value4` mediumtext collate utf8_unicode_ci,
  `type` varchar(30) collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `type` (`type`),
  KEY `date` (`ts`)
) ENGINE=MyISAM AUTO_INCREMENT=469692 DEFAULT CHARSET=utf8
  COLLATE=utf8_unicode_ci
Run Code Online (Sandbox Code Playgroud)

如果我执行这样的查询,则需要2~18秒才能完成:

SELECT `id`, `ts`, `value1`, `value2`, `value3` FROM table1 WHERE
`type` = 'something' ORDER BY `id` DESC limit 0,10; 
Run Code Online (Sandbox Code Playgroud)

EXPLAIN …

mysql optimization

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

整个mysql表上的唯一键?

假设我有一个包含两列的mysql表:A和B.是否可以使用唯一键,这样我只能在A或B中插入一次值(整个表中只有一次)?

因此,如果列A包含'qwe'而B包含'asd',那么这两个值就不能再插入任何列中.

这不起作用:

UNIQUE KEY `A` (`A`,`B`),
UNIQUE KEY `A_2` (`A`),
UNIQUE KEY `B` (`B`),
UNIQUE KEY `B_2` (`B`,`A`)
Run Code Online (Sandbox Code Playgroud)

谢谢.

编辑:我能够使用以下触发器完成此操作:

delimiter |
create trigger unique_check before insert on mytable
       for each row begin
              declare alreadyexists integer;
          select count(*) > 0 into alreadyexists from mytable
                 where A=NEW.B or B=NEW.A;
          IF alreadyexists = 1 THEN begin
             DECLARE dummy INT;
         SELECT 'A OR B already exists' INTO dummy FROM mytable
            WHERE nonexistent = 'value';
 end;
 END IF;
 END;|
Run Code Online (Sandbox Code Playgroud)

但是,我没有看到"A OR B已存在"错误消息,但是:

ERROR …

mysql unique-key mysql-error-1054

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

如果磁盘上的可用空间很少,我该如何优化9GB的表?

我在12GB磁盘上有9GB myisam表,并具有5​​MB可用空间。我怎么optimize桌子?

问题是OPTIMIZE可以通过将整个表复制到新文件来工作,因此我需要9GB的可用空间才能成功。

我唯一能想到的解决方案是

  1. 停止在桌子上写东西,
  2. 将表逻辑备份到另一台机器
  3. 放下桌子
  4. 通过从另一台计算机上的备份还原来重新创建表

将来我应该将表的大小限制为小于可用的可用空间。

我回答了我的问题还是有更好的解决方案?谢谢。

mysql

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

如何在带引号的占位符中使用查询?(perl/postgresql)

我正在尝试执行以下脚本:

#!/usr/bin/perl -w

use strict;
use DBI;

my $db = "Pg";
my $db_database = "whatever";
my $user = "whatever";
my $password = "whatever";

my $dbh = DBI->connect("dbi:$db:dbname=$db_database", $user, $password);

my $query = $dbh->prepare (q{SELECT
                   arrival_date - INTERVAL '? MINUTE'
                   FROM emails LIMIT 1})
  or die ("unable to prepare");
$query->execute(60) or die("unable to execute");

print $query->fetchrow_array, "\n";
Run Code Online (Sandbox Code Playgroud)

(arrival_date具有以下格式:带时区的时间戳NOT NULL默认值CURRENT_TIMESTAMP)

问题是没有检测到问号占位符,因为它的内部单引号:

DBD::Pg::st execute failed: called with 1 bind variables when 0 are needed 
Run Code Online (Sandbox Code Playgroud)

如果我使用qq {},$ 1占位符,并尝试使用$ dbh-> quote进行一些变化,则无效.我怎样才能做到这一点?

postgresql perl dbi

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