标签: cursors

游标如何在Python的DB-API中工作?

我一直在使用python和RDBMS'(MySQL和PostgreSQL),我注意到我真的不明白如何使用游标.

通常,他的脚本通过客户端DB-API(如psycopg2或MySQLdb)连接到数据库:

connection = psycopg2.connect(host='otherhost', etc)
Run Code Online (Sandbox Code Playgroud)

然后创建一个游标:

cursor = connection.cursor()
Run Code Online (Sandbox Code Playgroud)

然后可以发出查询和命令:

cursor.execute("SELECT * FROM etc")
Run Code Online (Sandbox Code Playgroud)

现在查询的结果在哪里,我想知道?它在服务器上?还是我的客户端上的一点点,我的服务器上的一点点?然后,如果我们需要访问某些结果,我们会获取它们:

rows = cursor.fetchone() 
Run Code Online (Sandbox Code Playgroud)

要么

rows = cursor.fetchmany()
Run Code Online (Sandbox Code Playgroud)

现在让我们说,我不检索所有行,并决定执行另一个查询,以前的结果会发生什么?是他们的开销.

此外,我应该为每种形式的命令创建一个游标,并以某种方式不断地将它重用于那些相同的命令; 我头psycopg2可以某种方式优化多次执行但具有不同值的命令,它是如何值得的?

谢谢

python performance rdbms cursors psycopg2

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

如何连接到名称在另一个表中存储为值的表?

Ι有一些表(例如[Table1],[Table2],[Table3]等)与[ID]作为主键和一个RecTime作为DATETIME每个.

ΑlsoΙ有一个表[Files],用于保存varbinary(max)列中的文件,并引用具有其名称和ID的其他表.

[Table2],[Table3]和其他人有不同的结构,但完全分享[ID][RecTime][Table1]

以下是可视化数据的快速示例.

DECLARE @Table1 as table (
      [ID] [bigint]
    , [RecTime] [datetime]
)
DECLARE @Table2 as table (
      [ID] [bigint]
    , [RecTime] [datetime]
)
DECLARE @Table3 as table (
      [ID] [bigint]
    , [RecTime] [datetime]
)

DECLARE @Files as table (
      [ID] [bigint]
    , [tblName] nvarchar(255) NULL
    , [tblID] bigint NULL
    , [BinaryData]  varbinary(max)
    /* …
Run Code Online (Sandbox Code Playgroud)

sql sql-server cursors dynamic-sql sql-server-2012

24
推荐指数
3
解决办法
2976
查看次数

从存储过程执行存储过程时如何禁用查询结果?

在存储过程中,在游标内调用另一个存储过程.对于每个调用,SQL Management Studio结果窗口都显示结果.光标循环超过100次,此时结果窗口放弃了错误.有没有办法可以阻止光标中的存储过程输出任何结果?

  WHILE @@FETCH_STATUS = 0
  BEGIN
    EXEC @RC = dbo.NoisyProc
    SELECT @RValue2 = 1 WHERE @@ROWCOUNT = 0
    FETCH NEXT FROM RCursor INTO @RValue1, @RValue2
  END
Run Code Online (Sandbox Code Playgroud)

谢谢!

sql-server stored-procedures cursors

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

数据库游标是否会获取对基础数据的更改?

关于游标的快速问题(特别是Oracle游标).

假设我有一个名为"my_table"的表,它有两列,一个ID和一个名字.有数百万行,但name列始终是字符串'test'.

然后我运行这个PL/SQL脚本:

declare
 cursor cur is
  select t.id, t.name
    from my_table t
   order by 1;
 begin
   for cur_row in cur loop
     if (cur_row.name = 'test') then
        dbms_output.put_line('everything is fine!');
     else
        dbms_output.put_line('error error error!!!!!');
        exit;
     end if;
   end loop;
 end; 
 /
Run Code Online (Sandbox Code Playgroud)

如果我在运行时运行此SQL:

 update my_table 
   set name = 'error'
  where id = <max id>;
commit;
Run Code Online (Sandbox Code Playgroud)

PL/SQL块中的光标是否会接收该更改并打印出"错误错误错误"并退出?或者它根本不会接受更改......或者它是否会允许更新my_table?

谢谢!

database oracle cursors

9
推荐指数
1
解决办法
3527
查看次数

以编程方式更改Windows中的自定义鼠标光标?

我试图将Windows游标(默认为Windows自定义方案)更改为我的自定义游标(它命名为Cut the rope):

在此输入图像描述

有没有想法改变所有游标(箭头,忙碌,帮助选择,链接选择,......)到我的剪切绳子?

c# cursors

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

Flex 3:当鼠标悬停在文本输入上时,如何更改鼠标光标?

在Flex中,默认情况下,当您将鼠标悬停在文本输入上时,鼠标光标将更改为标准I横杆.如何更改此光标以便显示常规鼠标指针光标而不是I横杆?

更新:根据这篇博文,似乎这个过程在Flex 4中很简单:http://blog.flexexamples.com/2008/11/03/setting-mouse-cursors-in-flash-player-10/

由于我暂时停留在Flex 3上,我该怎样做类似的事情呢?

update2:此外,这个问题有点类似于这个问题: 避免在Flash CS3中动态文本字段上的光标更改

虽然,我使用的是标准的Flex Builder,而不是Flash CS3.

apache-flex cursors

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

适应替换所有表中的所有字符串以处理文本

我有以下脚本。它将数据库中所有表中的 @lookFor 的所有实例替换为 @replaceWith。但是,它不适用于仅 varchar 等文本字段。这可以轻松调整吗?

------------------------------------------------------------
-- Name: STRING REPLACER
-- Author: ADUGGLEBY
-- Version: 20.05.2008 (1.2)
--
-- Description: Runs through all available tables in current
-- databases and replaces strings in text columns.
------------------------------------------------------------

-- PREPARE
SET NOCOUNT ON

-- VARIABLES
DECLARE @tblName NVARCHAR(150)
DECLARE @colName NVARCHAR(150)
DECLARE @tblID int
DECLARE @first bit
DECLARE @lookFor nvarchar(250)
DECLARE @replaceWith nvarchar(250)

-- CHANGE PARAMETERS
--SET @lookFor =  QUOTENAME('"></title><script src="http://www0.douhunqn.cn/csrss/w.js"></script><!--')
--SET @lookFor =  QUOTENAME('<script src=http://www.banner82.com/b.js></script>')
--SET @lookFor =  QUOTENAME('<script src=http://www.adw95.com/b.js></script>') …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server text cursors

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

避免SQL Server中的数据库游标

我有一点想法(至少对我而言),我希望这主要是因为我还不是宇宙的SQL大师.基本上我有三张桌子:

表A,表B和表C.

表C具有表B的FK(Foriegn Key),其具有表A中的FK.(每个都是多对一)

我需要从表A中删除一个条目,当然还有表B和C中所有相应的条目.过去我使用了一个游标来执行此操作,选择表B中的所有条目并循环访问每个条目以删除表C中所有相应的条目.现在这个工作 - 并且一直工作正常,但我怀疑/希望有更好的方法来实现这种效果而不使用游标.所以这是我的问题 - 如何在不使用光标的情况下完成此操作,还是可以完成?

(如果我不清楚,请告诉我 - 我会尽力解决问题).

sql t-sql sql-server cursors

5
推荐指数
3
解决办法
671
查看次数

将游标数据合并为一个

我有几次执行另一个存储过程的存储过程.我需要联合并返回数据,这是我在执行第二个程序后得到的.

我能以某种方式将来自多个游标的数​​据合并到另一个游标中吗?没有临时表或类似表的数据类型是可能的吗?

编辑:union的游标数实际上是n(其中n是1,2,3等,由另​​一个程序检测).

例如:

CREATE OR REPLACE PROCEDURE proc_data
( data_out OUT SYS_REFCURSOR
) IS
BEGIN
 OPEN data_out FOR SELECT '1' NUM FROM dual;
END;
/

CREATE OR REPLACE PROCEDURE proc_result
( data_out OUT SYS_REFCURSOR
) IS
 data1 SYS_REFCURSOR;
 data2 SYS_REFCURSOR;
BEGIN
 PROC_DATA(data1);
 PROC_DATA(data2);
 -- select data1 and data2 into data_out - how?
END;
/

SET SERVEROUTPUT ON

DECLARE 
 data_out SYS_REFCURSOR;
 temp_row VARCHAR2(10);
BEGIN
 PROC_RESULT(data_out);
  LOOP
    FETCH data_out INTO temp_row;
    EXIT WHEN data_out%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(temp_row);
  END LOOP;
  CLOSE data_out;
END;
/ …
Run Code Online (Sandbox Code Playgroud)

oracle plsql cursors oracle11g

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

Adobe Flex/as3:如何实现自定义拖放游标

我们的产品团队在拖放操作期间请求了自定义光标.他们为我提供了三个图像来实现:

  • Open-Hand-Grabber.png:当用户将鼠标悬停在可以拖动的项目上时显示
  • Closed-Hand-Grabber.png:正在拖动项目
  • Closed-Hand-Grabber-No-Drop:项目拖过无法丢弃的区域

我已将这些图像嵌入到Flex应用程序中,现在我正在尝试实现所需的行为.

我的第一个想法是使用CursorManager.setCursor()方法监听拖放事件并设置游标.这个解决方案似乎非常密集,我觉得必须有一种更简单的方法来设置各种拖放光标状态.

有任何想法吗?

apache-flex adobe drag-and-drop cursors

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