小编Jac*_*ian的帖子

如何准备sql语句和绑定参数?

不幸的是,文档完全没有示例(确实很奇怪),好像它假设所有读者都是优秀的程序员一样。鉴于我是新手,C++无法真正从文档中弄清楚如何真正准备和执行语句。我喜欢它是如何在实现的方式PDO进行PHP。通常,我只是这样做:

$s = $db->prepare("SELECT id FROM mytable WHERE id = :id");
$s->bindParam(':id', $id);
$s->execute();
Run Code Online (Sandbox Code Playgroud)

或使用?令牌来做:

 $data = array();
 $data[] = 1;
 $data[] = 2;
 $s = $db->prepare("SELECT id FROM mytable WHERE id = ? or id = ?");
 $s->execute($data);
Run Code Online (Sandbox Code Playgroud)

现在,我拥有C++sqlite3.h掌握在手中。目前,我只知道如何连接数据库-我做到了,没有收到任何错误:

sqlite3 * conn;
int rc = sqlite3_open(db_name, &conn);
Run Code Online (Sandbox Code Playgroud)

请提供有关如何实现类似的事情,一些指令(有明确的小例子)PDO确实在PHP-使用命名参数和使用准备语句?令牌。

c++ sqlite prepared-statement

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

无法抑制弃用警告

在我的Django应用程序中,当我导入一个第三方库时,我在控制台中收到此警告:

不推荐使用imp模块以支持importlib; 有关其他用途,请参阅模块的文档

但是,如果我在Python shell中进行导入,那么一切都很好.我想在Django中实现相同的行为.这是我根据其他操作系统线程中的答案尝试的:

import warnings
from django.utils.deprecation import RemovedInDjango110Warning
warnings.filterwarnings(action="ignore", category=RemovedInDjango110Warning)
Run Code Online (Sandbox Code Playgroud)

上面的代码导致另一条错误消息,表明RemovedInDjango110Warning不存在.我也试过这个:

import warnings

def fxn():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fxn()

from third_party_lib import some_module
Run Code Online (Sandbox Code Playgroud)

但我仍然收到相同的错误消息.所以,似乎此问题的所有先前答案都已过时.我们需要一些新的解决方案.谢谢!

我也试过这个:

import warnings

with warnings.catch_warnings():
    warnings.filterwarnings("ignore",category=DeprecationWarning)
    from third_party_lib import some_module
Run Code Online (Sandbox Code Playgroud)

但它没有效果.

python django

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

找不到类Firebase\JWT\JWT

我想在我的代码中使用纯firebase/php-jwt库.首先,我去/var/www/html/和官方图书馆页面建议,我这样做

composer require firebase/php-jwt
Run Code Online (Sandbox Code Playgroud)

运行此命令后,我看到内部创建了一个新的供应商文件夹,/var/www/html/其中包含大量文件和子文件夹.然后我创建我的token.php文件/var/www/html/,内容类似于官方页面中的内容:

<?php
use \Firebase\JWT\JWT;

$key = "example_key";
$token = array(
    "iss" => "http://example.org",
    "aud" => "http://example.com",
    "iat" => 1356999524,
    "nbf" => 1357000000
);

$jwt = JWT::encode($token, $key);
$decoded = JWT::decode($jwt, $key, array('HS256'));

print_r($decoded);
Run Code Online (Sandbox Code Playgroud)

但是,当我转到localhost/token.php时,我收到以下错误消息:

致命错误:未捕获错误:在/var/www/html/token.php:12中找不到类'Firebase\JWT\JWT'堆栈跟踪:在#var/www/html/token.php中引发#0 {main}第12行

我不确定它是否重要,但我的PHP版本是7.0.

php autoloader composer-php

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

SuspendLayouts,resumeLayouts和grid列

我使用这两个函数suspendLayouts,resumeLayouts以优化大网格渲染.特别是,我在编程方式隐藏一些网格列之前和之后使用它们.我是这样做的:

Ext.suspendLayouts();

... a lot of code, some code may hide a lot of grid columns

Ext.resumeLayouts();
Run Code Online (Sandbox Code Playgroud)

如果我不使用它们,浏览器要么不响应,要么响应有关持久脚本的警报.如果我使用它们,那么它运行得非常快,但并非在所有浏览器中运行.例如,在Chrome中,我看到一些列不会被隐藏,而它们的列标题/标题会隐藏.

在具有相对少量列的小网格中,此代码没有挂起和恢复布局,效果很好.但我需要它在大型网格中工作.

顺便说一句,我隐藏了这样的列

var cols=grid.headerCt.getGridColumns()
Ext.each(cols, function (item, index, all){
  ... some code
  if(ok) item.setVisible(false);
})
Run Code Online (Sandbox Code Playgroud)

可能还有另一种隐藏网格列的更好方法.

extjs extjs4.1

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

为什么 OpenXML 读取行两次

我计算两个工作表中的行数,如下所示:

foreach (WorksheetPart worksheetPart in workbookPart.WorksheetParts)
{
    OpenXmlPartReader reader = new OpenXmlPartReader(worksheetPart);
    if (count == 0)
    {
        while (reader.Read())
        {
            if (reader.ElementType == typeof(Row))
            {
                count_first++;
            }
        }
    }
    else if (count == 1)
    {
        while (reader.Read())
        {
            if (reader.ElementType == typeof(Row))
            {
                count_second++;
            }
        }
    }
    count++;
}
Run Code Online (Sandbox Code Playgroud)

count_first对于和中的两个工作表,count_second我得到的数据是数据行数的两倍。为什么会这样?它实际上意味着什么?这是否意味着OpenXML解析每个列表两次?

编辑

好吧,我找到了解决方案。我想,为了立即获得它,你应该将这种神圣的知识保存在某个秘密的地方。所以,这里是:

while (reader.Read())
{
    if (reader.ElementType == typeof(Row))
    {
        do
        {
            count_first++;
        }   while (reader.ReadNextSibling());
    }
}
Run Code Online (Sandbox Code Playgroud)

c# excel openxml

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

为什么这个字符串没有通过测试功能?

这就是我做的:

var input_string = "(1) (1) test.txt";
var reg = new RegExp('^\\(\\d+\\)\\s+' + input_string,'i');
var tested_string = "(1) (1) (1) test.txt";
alert(reg.test(tested_string)); // returns false
Run Code Online (Sandbox Code Playgroud)

我希望它能回归真实,但事实并非如此.我想知道,我做错了什么?

javascript regex

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

错误:缺少表"new"的FROM子句条目

我有一个父表layer_1_和若干子表的layer_1_points,layer_1_linestrings等它包含一些几何数据.每个子表都有自己的几何约束.所以,例如,layer_1_points有这个约束:

CONSTRAINT enforce_geotype_geom_geom CHECK (geometrytype(geom) = 'POINT'::text)
Run Code Online (Sandbox Code Playgroud)

layer_1_linestrings表有这个约束:

CONSTRAINT enforce_geotype_geom_geom CHECK (geometrytype(geom) = 'LINESTRING'::text)
Run Code Online (Sandbox Code Playgroud)

许多其他层表有相似的名称:layer_2_,layer_3_,..., layer_N_.他们都有自己的子桌.我想要实现的是当用户插入父表(layer_N_)时,insert应该将此语句转发到特定的子表(layer_N_points等).所以,例如,当我这样做时:

INSERT INTO layer_1_ (geom) VALUES(ST_GeomFromText('POINT(0 0)', 3857))
Run Code Online (Sandbox Code Playgroud)

我应该插入layer_1_points,因为geom类型是POINT.为了实现这一切,我创建了这个触发器功能和触发器本身:

CREATE OR REPLACE FUNCTION trigger_layer_insert() 
  RETURNS trigger AS 
$$ 
DECLARE 
    var_geomtype text;
    table_name text;
    layer_id text := (TG_ARGV[0])::text;
BEGIN
    var_geomtype := geometrytype(NEW.geom);    
    IF var_geomtype = 'POINT' THEN
        table_name := …
Run Code Online (Sandbox Code Playgroud)

postgresql

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

使用Jenkins构建Docker镜像会导致"找不到支持的协议方案"

我正在逐行跟踪这个在线教程.但是在第3步 - 任务:配置插件 - 当我按"测试连接"按钮时,我收到此错误消息:

找不到支持的协议方案:http://172.17.0.59:23485

这是我做过的屏幕:

在此输入图像描述

那么,这有什么问题以及使用Jenkins配置Docker镜像的正确方法是什么?

jenkins docker

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

预期在','附近的函数参数

我有一个像这样定义的类:

local MyClass = {
 _VERSION = 'MyClass 1.0.0'
}
MyClass.__index = MyClass

setmetatable(MyClass, {
    __call = function (cls, ...)
        return cls.new(...)
    end
})

function MyClass.new(prop1)
    local self = setmetatable({}, MyClass)
    self.prop1 = prop1
    return self
end

function MyClass:msg(txt)
    self.prop1 = txt
    print(self.prop1)
end

function MyClass:callFunc(func, ...)
    pcall(func, ...)
end
Run Code Online (Sandbox Code Playgroud)

我的客户端代码可能如下所示:

local inst = MyClass("value 1")
inst:msg("Hello world")
inst:callFunc(inst:msg, "Hello again")
Run Code Online (Sandbox Code Playgroud)

当我运行此客户端代码时,我收到一条错误消息

预期在','附近的函数参数

代码是完全可重新编写的.你可以在这里轻松查看.只需复制粘贴并运行它,您将收到此错误消息.我该如何解决?

lua unit-testing

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

Airflow:如何从 PythonOperator 中的 python_callable 内部创建子运算符

我有一个简单的 python 运算符,定义如下:

loop_records = PythonOperator(
    task_id = 'loop_records',
    provide_context = True,
    python_callable = loop_topic_records,
    dag = dag    
)
Run Code Online (Sandbox Code Playgroud)

这个 python 操作符调用loop_topic_records,定义如下:

def loop_topic_records(**context):
    parent_dag = context['dag']
    for i in range(3):
        op = DummyOperator(
            task_id="child_" + str(i),
            dag=parent_dag
        )
        logging.info('Child operator ' + str(i))
        loop_records >> op
Run Code Online (Sandbox Code Playgroud)

我看到代码没有引发任何错误。它甚至打印Child operator 0..2在日志中。但是,在 dag 中Graph view我没有看到子操作符,我只看到loop_records节点,就好像我的 dag 只包含一个操作符一样。那么,这有什么问题呢?我该如何解决?

python airflow

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