鍍金池/ 問答/ 數(shù)據(jù)庫問答
純妹 回答

你可以試試這樣

from models.theme_product import Theme_Product

如果這個還不行,試試這個

from 項目目錄.models.theme_product import Theme_Product

一次查出?這個可以加個派生列,但是沒意義啊,你是想看各部門人數(shù)占比嗎?

查部門人數(shù)(如果不行給列名加引號試試,語法應(yīng)該沒錯):
SELECT 部門名稱, COUNT(*) 部門人數(shù)
FROM table
GROUP BY 部門名稱;

查總?cè)藬?shù):
SELECT COUNT(*)
from table

大濕胸 回答

這是把連接字符串配在app.config里了,app.config配了多個連接字符串,這個data意思是要找key為"data"的那個連接字符串。

故人嘆 回答

400百萬數(shù)據(jù)不會都放在userList里了吧?
數(shù)據(jù)從哪里來? 文件? 網(wǎng)絡(luò)?
如果那樣的話內(nèi)存除非很大,不慢才怪, 要分批, 一次或500~1000左右記錄是效率更高.

淚染裳 回答

方案三:能不能加一個埋點處理呢?也就是,在可能發(fā)生有效銷售情況的地方,做一個埋點處理,然后就不會讓0銷售的數(shù)據(jù),進(jìn)入處理中間表了呢?

傻丟丟 回答

問題描述的不是很清楚

如果你想做的事情是: 當(dāng)前端傳入的數(shù)據(jù)為空字符串時,在查詢時不對此字段做限制,只對前端傳了非空的字段進(jìn)行限制的話, mongodb的find方法是需要傳一個給定值的,傳空字符串 會匹配此字段為空的記錄, 你需要在執(zhí)行db查詢操作之前,
在nodejs代碼中判斷字符串是否為空,然后再執(zhí)行查詢語句。

不知是否幫到你,可以留言讓我進(jìn)一步了解你的問題。

補(bǔ)充回答:

以nodejs的express框架action請求為例:

const mongoClient = require('mongodb').MongoClient;
module.exports.get = function (req, res, next) {
    let queryEmail = req.query.email;
    
    mongoClient.connect(url, function (err, db) {
        if (err) throw error;
        let col = db.collection('your_collection');
        if (typeof queryEmail === 'string' && queryEmail.length === 0) {
            col.find({}).toArray(function (err, list) {
                if (err) throw error;
                res.json({
                    data: list
                });
            });
        }
        else {
            col.find({ email: queryEmail }).toArray(function (err, list) {
                if (err) throw error;
                res.json({
                    data: list
                });
            });
        }
        
    });
    
}

以上代碼只是幫你打個樣,僅對于email這一個字段的查詢, 當(dāng)輸入為空字符串時,直接將查詢條件設(shè)為了空對象,因此不對任何字段做限制輸出查詢結(jié)果;如果email字段里有貨,則在查詢條件中限制email字段必須符合輸入值。
有問題請回復(fù)。

為啥不用工具直接導(dǎo)入?

  • 如果是格式化的文本數(shù)據(jù)文件,可以直接使用數(shù)據(jù)庫工具導(dǎo)入。
  • 如果是數(shù)據(jù)庫對數(shù)據(jù)庫,有專門的對應(yīng)數(shù)據(jù)庫的備份恢復(fù)工具,都比api方式快、好。

具體還得看你到底是打算做什么,業(yè)務(wù)有什么關(guān)聯(lián),說的不夠清楚

故林 回答

不推薦樓上說的 replace info 的方式, 推薦在 PHP 代碼里取出這個字段的數(shù)據(jù), 對比, 一樣的話不更新, 不一樣的話做成最終要的樣子, 然后 update 更新到表中

涼薄 回答

可以使用later模塊實現(xiàn)定時任務(wù)。
至于分析文件,這個得看你們的.txt文件怎么保存數(shù)據(jù)了,使用特殊符號將數(shù)據(jù)隔開,還是用鍵值的形式存儲,你只要用nodejs,讀取其中的數(shù)據(jù),然后將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為數(shù)組,對象或者序列化字符串等你需要的數(shù)據(jù)即可。使用過formidable中間件和querystring模塊你應(yīng)該知道。

痞性 回答

你安裝的這個,應(yīng)該是:import mysql.connector

使用 MySQLdb 的話,報錯信息和這里(http://www.runoob.com/python/... )提到的一樣,應(yīng)該是沒有正確安裝拓展包。
可以去這里下載:https://sourceforge.net/proje...

帥到炸 回答

schema 是對一個 database 的邏輯分割。你理解中的所有放在 database 中的東西,事實上,在 pg 中可能都是掛在 schema 下的, table, squeue, function, view, trigger 等。

具體的功能,我記得,表分區(qū) 也可以作用于 schema 。

當(dāng)然,如果你對這東西沒概念,你自然也不清楚如何正確使用它,那么忽略它,只使用 public 就好了。

鐧簞噯 回答

order(...是不是漏了空格

賤人曾 回答
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var activeFile = exports.activeFile = function activeFile(state) {
  return state.openFiles.find(function (file) {
    return file.active;
  }) || null;
};

//================
'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});

exports.default = function () {
  return {
    currentProjectId: '',
    currentBranchId: '',
    currentMergeRequestId: '',
    changedFiles: [],
    endpoints: {},
    lastCommitMsg: '',
    lastCommitPath: '',
    loading: false,
    openFiles: [],
    parentTreeUrl: '',
    trees: {},
    projects: {},
    leftPanelCollapsed: false,
    rightPanelCollapsed: false,
    panelResizing: false,
    entries: {},
    viewer: 'editor',
    delayViewerUpdated: false
  };
};

http://babeljs.io/repl/

病癮 回答
mongo --host 'mongodb://10.0.1.59:27017'
莓森 回答

語法要求,Group By本來就是根據(jù)某個字段來分組,最后查詢出的數(shù)據(jù)是取這個字段唯一的一個數(shù)據(jù)呈現(xiàn)。

但其他字段的數(shù)據(jù)是不一樣的,在分組后sqlserver無法將它們合并,所以當(dāng)然select *不行咯。

至于mysql為什么行,那肯定是別人做了優(yōu)化,在Group By后自動合并數(shù)據(jù)了吧。

乞許 回答

從上面的提示來看,就是因為端口不通。截圖上你已經(jīng)有一個通過SSH Tunnel的連接是成功的,說明實例是存活的。目前想到兩個可能性可以驗證一下:

  1. 網(wǎng)絡(luò)防火墻。你的IP來自阿里云結(jié)點,可以看一下阿里云的安全策略里面是否阻止了對外開放27017端口。
  2. 如果是使用的MongoDB 3.6,它在默認(rèn)情況下支持IP白名單策略以防止未授權(quán)的訪問。

出于安全原因并不太建議對公網(wǎng)開放MongoDB端口,更建議把應(yīng)用和數(shù)據(jù)庫放在一個網(wǎng)絡(luò)內(nèi)部進(jìn)行訪問。因為除了安全原因外,對公網(wǎng)開放時帶寬往往也是達(dá)不到的。

不舍棄 回答

new formData可以傳入一個form標(biāo)簽進(jìn)去,form標(biāo)簽內(nèi)所有的攜帶name屬性的表單元素會被認(rèn)為是formItem。

表單元素包含下列(可能還有其他的,但是不太常用了,2333):

  1. input
  2. textarea

如果你確定你數(shù)據(jù)的來源是一個div,那么很抱歉,直接new FormData是不能夠得到你想要的結(jié)果的
需要你自己在后邊進(jìn)行append的操作:

formData.append('content', document.querySelector(".ql-editor").innerHTML)
安若晴 回答

假設(shè)表結(jié)構(gòu)如下

CREATE TABLE `signs` (
  `userid` int(11) NOT NULL,
  `signtime` int(11) NOT NULL,
  `type` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`userid`,`signtime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

可以用如下SQL解決

select tmp.*,
    max_signout-min_sign diff  #簽退時間差
    from (
    select 
    date(FROM_UNIXTIME(signtime)) day , 
    userid,
    min(
        case type
        when 0 then
         signtime
        when 1 then
            #這里表示的是一個無窮大的意思,反正就是讓簽退時間不參與比較,
         100000000000
        end
    ) min_sign, #一天中的最早的簽到時間
    max(
        case type
        when 0 then
         0
        when 1 then
         signtime
        end
    ) max_signout #一天中的最晚簽到時間
    from signs 
    group  by 1 ,2
) tmp 
order by diff desc ;

不過沒有考慮到跨天簽到的,比如早上9點打卡,第二天上午7點下班的情況。。。。

帥到炸 回答

guid字段添加普通索引

這是我測試數(shù)據(jù):

加索引id執(zhí)行計劃:

explain SELECT * FROM qxd.qxd_community where id = '540a1cb9-04cc-ce17-9933-81bb115328bb'
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE qxd_community ref id id 108 const 1 Using index condition

未加索引id執(zhí)行計劃:

clipboard.png