小编Jem*_*ake的帖子

Python为什么不从函数返回我的mysql-connector游标?

当我从函数返回它时,Python(2.7.3)以某种奇怪的方式违反了我的mysql-connector游标。第一个例子很好用...

cnx = connect()
sql = "SELECT * FROM MyTable"
cursor = cnx.cursor()
cursor.execute(sql)
row = cursor.fetchone()
Run Code Online (Sandbox Code Playgroud)

但是,如果我返回游标并从外部尝试fetchone()(或fetchall()),它将引发异常。

def run_query():
    cnx = connect()
    sql = "SELECT * FROM MyTable"
    cursor = cnx.cursor()
    cursor.execute(sql)
    return cursor

mycursor = run_query()
row = mycursor.fetchone()
Run Code Online (Sandbox Code Playgroud)

扔...

File "/usr/lib/pymodules/python2.7/mysql/connector/cursor.py", line 533, in fetchone
  row = self._fetch_row()
File "/usr/lib/pymodules/python2.7/mysql/connector/cursor.py", line 508, in _fetch_row
  (row, eof) = self.db().protocol.get_row()
AttributeError: 'NoneType' object has no attribute 'protocol'
Run Code Online (Sandbox Code Playgroud)

尽管“打印类型(mycursor)”将打印“ mysql.connector.cursor.MySQLCursor”,这是事实。

Python对从函数返回的对象执行哪种邪恶的骚扰?(请记住,它将对模块传递的游标执行此操作……因此,这不像从“ import mysql.connector”作用域传递出去的对象一样。)

python mysql-connector python-2.7

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

在Rust中检查两个HashMap是否具有相同的键集

假设我有两个HashMaps(或任何具有映射到其他键的键的映射结构)map1和map2,并且我想确保它们具有相同的键集。需要注意的是,钥匙都在地图同一类型,但不会

我最初的尝试只是:

map1.keys().eq(map2.keys())
Run Code Online (Sandbox Code Playgroud)

并且,尽管这是一次成功,但迭代器的eq函数(可以理解)似乎按照迭代器产生的顺序比较键,而不是通过检查第二个迭代器中任何地方是否存在键来进行比较。这与HashMap :: keys()生成一个迭代器(其中顺序是不确定的)相结合的事实意味着,即使键的集合(从集合论的角度来看)是相等的,相等函数也经常会失败。相同。

因此,我的下一个尝试是制作一个执行此操作的函数:

fn keys_match<T:std::cmp::Eq + std::hash::Hash,U,V>(map1:&HashMap<T,U>, map2:&HashMap<T,V>) -> bool {
  // Make sure that map1.keys() ? map2.keys()
  for key in map1.keys() {
    match map2.get(key) {
      None => return false,
      Some(_) => {}
    }
  }
  // If map1.keys() ? map2.keys() and their sizes equal, then the sets are equal
  map1.len() == map2.len()
}
Run Code Online (Sandbox Code Playgroud)

Rust初学者注意:实际上,我的第一次尝试是知道映射中的键是String类型的,所以我的函数签名是:

fn keys_match<T,U>(map1:&HashMap<String,T>, …
Run Code Online (Sandbox Code Playgroud)

iterator equality rust

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

如何从Google Visualizations量表中删除值标签?

我在页面上使用Google Visualizations量表,但重要的是它显示的值不会显示为针头正下方的标签.

我发现了两种方法.一旦您将DOM导航到规范窗口小部件并导航到SVG部分,您可以将textContent元素设置为空字符串,也可以完全删除整个文本标签实体.

function removeLabel(widget) {
    var gauge_label_parent = widget.getElementsByTagName("g")[1];
    var gauge_label = gauge_label_parent.getElementsByTagName("text")[0];
    gauge_label.textContent = "";
    // Another way of getting rid of the text: remove the element
    //    gauge_label_parent.removeChild(gauge_label);
}
Run Code Online (Sandbox Code Playgroud)

问题是:这两种技术都是第一次起作用.如果我使用更新的值重新绘制仪表,则标签会重新出现,并尝试删除标签元素或设置textContent =""不会执行任何操作.

因此,而不是只能用以下内容更新值:

data.setValue(0, 1, newValue);
chart.draw(data, options);
Run Code Online (Sandbox Code Playgroud)

我发现我必须稍微改变一下选项,比如:

data.setValue(0, 1, newValue);
options.minorTicks = 3; // Change the options somehow
chart.draw(data, options); // Tell gauge to draw that
options.minorTicks = 2; // Change the options back to what they were
chart.draw(data, options); // Draw again
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴,看看它是如何工作的.将fixLabel设置为true或false,具体取决于您是否要存在标签问题.请记住,第一次标签将(正确)丢失.更新其值时会重新显示. …

google-visualization

0
推荐指数
1
解决办法
3011
查看次数