GVKun编程网logo

cursor.rowcount在python3k的sqlite3中始终为-1

25

想了解cursor.rowcount在python3k的sqlite3中始终为-1的新动态吗?本文将为您提供详细的信息,此外,我们还将为您介绍关于asp.net-mvc–为什么HttpContext.

想了解cursor.rowcount在python3k的sqlite3中始终为-1的新动态吗?本文将为您提供详细的信息,此外,我们还将为您介绍关于asp.net-mvc – 为什么HttpContext.Current在asp.net mvc中的用户定义类中始终为null?、c# – MongoCursor.Count vs … IAsyncCursor.Count?、CentOS7.5 安装 Python3.7 报错:configure: error: no acceptable C compiler found in $PATH --Python3、oracle中的sql%rowcount,sql%found、sql%notfound、sql%rowcount和sql%isopen的新知识。

本文目录一览:

cursor.rowcount在python3k的sqlite3中始终为-1

cursor.rowcount在python3k的sqlite3中始终为-1

我试图让rowcount一个sqlite3
cursor在我Python3k程序,但我百思不得其解,因为rowcount始终是-1,尽管什么Python3文档说(其实是矛盾的,它应该是None)。即使在获取所有行之后,rowcount仍停留在-1。是sqlite3虫子吗?我已经检查了表中是否有行。

如果afetchone()返回的值与有所不同None,我可以解决这个问题,但是我认为这个问题可以讨论。

谢谢。

答案1

小编典典

从文档中:

根据Python DB API规范的要求,rowcount属性为“ -1,以防在游标上未执行executeXX()或接口无法确定最后一个操作的行数”。

这包括SELECT语句,因为在获取所有行之前,我们无法确定查询产生的行数。

这意味着 所有 SELECT语句 都不会包含rowcount。您观察到的行为已记录在案。

编辑: 文档没有说在您执行操作rowcount 后将 要更新的任何地方,fetchall()因此假设这样做是错误的。

asp.net-mvc – 为什么HttpContext.Current在asp.net mvc中的用户定义类中始终为null?

asp.net-mvc – 为什么HttpContext.Current在asp.net mvc中的用户定义类中始终为null?

我创建了一个名为MyLongRunningClass的类,它包含一个方法:
public string ProcessLongRunningAction(IEnumerable<HttpPostedFileBase> files,string id)
    {
        int currentIndex = 0;

        foreach (HttpPostedFileBase file in files)
        {
            currentIndex++;
            lock(syncRoot)
            {                
             string path=HttpContext.Current.Server.MapPath("~//Content//images       //"+file.FileName);//Excecption is created here........
              file.SaveAs(path);
            }
          Thread.Sleep(300);
        }
        return id;
    }

从控制器调用此方法,使用文件列表保存在images目录中.每当执行HttpContext.Current.Server.MapPath(“〜// Content // images //”file.FileName)时,抛出NullReferenceException,并且HttpContext.Current始终为null.当我使用session时会发生同样的事情.我不知道代码有什么问题.

解决方法

看起来您在一个单独的线程上运行ProcessLongRunningAction.

但是,当您未在原始请求线程中运行时,HttpContext.Current将返回null.这是explained here.

如果在创建的每个线程上手动设置上下文,则可以使用它.这在SO中的类似问题上进行了讨论,如here和here.

但是,考虑到你的问题中的代码,如果你只是为该方法中的路径添加一个参数会更好,正如Johann Blais建议的那样.然后,您将解析原始请求线程中的路径并将其传递给该方法,然后该方法可以在分离的线程上运行.这样你的方法就不依赖于HttpContext.Current.

c# – MongoCursor.Count vs … IAsyncCursor.Count?

c# – MongoCursor.Count vs … IAsyncCursor.Count?

有没有人知道遗留MongoCursor的等效’Count’方法在哪里但在新驱动程序(IAsyncCursor)中?或者任何人都知道如何使用2.0异步驱动程序/方法复制它?

我们的想法是通过分页(跳过和限制)查询文档,只有一个数据库命中,获取文档,返回文档的计数和没有LIMIT的所有文档的计数

使用MongoDB C#传统驱动程序,我曾经这样做过:

MongoCursor<SaleOrderModel> result = collection.FindAs<SaleOrderModel>(query);

result.setSkip(20);
result.setLimit(10);

var saleOrders = result.ToList<SaleOrderModel>(); // 'limited' documents
var size = result.Size(); // Count of 'limited' documents
var count = result.Count(); // Count of all documents found (even if they are not returned)

解决方法

您可以使用 Find返回的 IFindFluent fluent查询界面使用2.0驱动程序执行此操作:

// Create the IFindFluent<SaleOrderModel> query.
var collection = db.GetCollection<SaleOrderModel>("saleOrders");
var filter = Builders<SaleOrderModel>.Filter.Eq(so => so.vendorId,5);
var query = collection.Find(filter);

// Get the count of all docs matching the query.
var count = await query.CountAsync();

// Execute the query with skip and limit.
var saleOrders = await query.Skip(20).Limit(10).ToListAsync();
var size = saleOrders.Count();

CentOS7.5 安装 Python3.7 报错:configure: error: no acceptable C compiler found in $PATH --Python3

CentOS7.5 安装 Python3.7 报错:configure: error: no acceptable C compiler found in $PATH --Python3

1、问题解析

报错信息中有这样一条:configure: error: no acceptable C compiler found in $PATH 即:配置错误,在 $path 中找不到可接受的 C 编译器

2、解决方式

安装 C 编译器 gcc (GNU 编译器套件):

yum -y install gcc

3、扩展

gcc 即:GNU 编译器套件 (GNU Compiler Collection) 包括 C、C++、Objective-C、Fortran、Java、Ada Go 语言的前端,也包括了这些语言的库(如 libstdc++、libgcj 等等)。GCC 的初衷是为 GNU 操作系统专门编写的一款编译器.

 

oracle中的sql%rowcount,sql%found、sql%notfound、sql%rowcount和sql%isopen

oracle中的sql%rowcount,sql%found、sql%notfound、sql%rowcount和sql%isopen

Oracle 存储过程 删除表记录时删除不存在的记录也是显示删除成功

2010-03-01 16:56 heaven886 | 分类:数据库DB | 浏览1040次
create or replace procedure delDept(p_deptno in dept.deptno%type) is
begin
    delete from dept where deptno=p_deptno;
    dbms_output.put_line('部门删除成功...');
    exception when others then
    dbms_output.put_line('部门删除失败...');
end;
 
 
删除不存在的数据并不会促发Oracle的异常
对于delete from dept where deptno=p_deptno;
判断是否有数据被删除可以用sql%rowcount,sql%notfound 来判断
    if sql%rowcount = 0 then
    dbms_output.put_line('部门删除失败...');
    end if;
    或者
    if sql%notfound then
    dbms_output.put_line('部门删除失败...');
    end if;
 
create or replace procedure delDept(p_deptno in dept.deptno%type) is
EmpCount    NUMBER; --影响的记录数
begin
    delete from dept where deptno=p_deptno;
     EmpCount := sql%rOWCOUNT;
     if(EmpCount <>0)
     then
    dbms_output.put_line('部门删除成功...');
    exception when others then
    dbms_output.put_line('部门删除失败...');
end;


sql%rowcount用于记录修改的条数,就如你在sqlplus下执行delete from之后提示已删除xx行一样,这个参数必须要在一个修改语句和commit之间放置,否则你就得不到正确的修改行数。

例如:
sql> declare n number;
2 begin
3 insert into test_a select level lv from dual connect by level<500;
4 n:=sql%rowcount;
5 commit;
6 dbms_output.put_line(n);
7 end;
8 /
499

如果我连续执行了3个select语句
然后调用sql%rowcount,得到的结果是最后一个select的条数。 要统计所有的,可以使用三个变量接收sql%rowcount,然后相加即可,不过貌似直接select的写法无法使用sql%rowcount。

在执行DML(insert,update,delete)语句时,可以用到以下三个隐式游标(游标是维护查询结果的内存中的一个区域,运行DML时打开,完成时关闭,用sql%isopen检查是否打开):

sql%found(布尔类型,默认值为null

sql%notfound(布尔类型,默认值为null)

sql%rowcount(数值类型默认值为0)

sql%isopen(布尔类型)

当执行一条DML语句后,DML语句的结果保存在四个游标属性中,这些属性用于控制程序流程或者了解程序的状态。当运行DML语句时,PL/sql打开一个内建游标并处理结果,游标是维护查询结果的内存中的一个区域,游标在运行DML语句时打开,完成后关闭。隐式游标只使用sql%FOUND,sql%NOTFOUND,sql%rOWCOUNT三个属性.sql%FOUND,sql%NOTFOUND是布尔值,sql%rOWCOUNT是整数值。

sql%FOUND和sql%NOTFOUND在执行任何DML语句前sql%FOUND和sql%NOTFOUND的值都是NULL,

在执行DML语句后,sql%FOUND的属性值将是:

  . TRUE :INSERT

  . TRUE :DELETE和UPDATE,至少有一行被DELETE或UPDATE.

  . TRUE :SELECT INTO至少返回一行

  当sql%FOUND为TRUE时,sql%NOTFOUND为FALSE。

  sql%rOWCOUNT

  在执行任何DML语句之前,sql%rOWCOUNT的值都是NULL,对于SELECT INTO语句,如果执行成功,sql%rOWCOUNT的值为1,如果没有成功或者没有操作(如update、insert、delete为0条),sql%rOWCOUNT的值为0.

  sql%ISOPEN

  sql%ISOPEN是一个布尔值,如果游标打开,则为TRUE,如果游标关闭,则为FALSE.对于隐式游标而言sql%ISOPEN总是FALSE,这是因为隐式游标在DML语句执行时打开,结束时就立即关闭。

no_data_found与sql%notfound以及sql%rowcount 的区别:

NO_DATA_FOUND:该异常可以在两种不同的情况下出现:第一种:当SELECT。。。。INTO语的WHERE子句 没匹配任何数据行时;第二种:试图引用尚未赋值的PL/sql index-by表元素时。

sql%NOTFOUND:是隐匿游标的属性,当没有可检索的数据时,该属性为:TRUE;常作为检索循环退出的条件。若某UPDATE或DELETE语句的WHERE子句不匹配任何数据行,该属性为:TRUE,但不并不出现NO_DATA_FOUND异常.

sql%rOWCOUNT:该数字属性返回了到目前为止,游标所检索数据库行的个数。


原文地址:http://blog.itpub.net/27573546/viewspace-758472/

我们今天的关于cursor.rowcount在python3k的sqlite3中始终为-1的分享已经告一段落,感谢您的关注,如果您想了解更多关于asp.net-mvc – 为什么HttpContext.Current在asp.net mvc中的用户定义类中始终为null?、c# – MongoCursor.Count vs … IAsyncCursor.Count?、CentOS7.5 安装 Python3.7 报错:configure: error: no acceptable C compiler found in $PATH --Python3、oracle中的sql%rowcount,sql%found、sql%notfound、sql%rowcount和sql%isopen的相关信息,请在本站查询。

本文标签:

上一篇为整个结果集向Django Rest Framework结果添加额外的数据(实现对一个结果集进行分组和汇总)

下一篇ArgumentError:关系需要类或映射器参数(关系模式中关键字是什么)