- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个脚本可以很好地处理简单的列表。它从单词列表中删除一些不需要的字符,使它们相互匹配并返回几个相似单词列表(比率为 0.6)。
但现在我需要它来处理 Access 数据库。我认为如果我在 crsr.fetchall() 上创建一个 for 循环并将所有项目放入一个列表(“单词”)中,它可以像以前那样工作。不幸的是,它没有,我真的想不通……
这是我的代码:
# -*- coding: utf-8 -*-
import pyodbc
import re
from difflib import SequenceMatcher
[x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]
# Connection to accdb
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=C:\\Users\\alice\\Desktop\\lexique3.accdb;'
)
cnxn = pyodbc.connect(conn_str)
crsr = cnxn.cursor()
# Put all words into a list
crsr.execute('SELECT unites_lexicales FROM Mot;')
result1 = crsr.fetchall()
words = []
for item in result1 :
words.append[item]
print(words)
此时,我得到一个错误:
TypeError: 'builtin_function_or_method' object is not subscriptable
我试着用范围迭代:
crsr.execute('SELECT unites_lexicales FROM Mot;')
result = crsr.fetchall()
words = []
for i in range(0, len(result)) :
words.append(result[i])
print(words)
但我得到了一个看起来像这样的项目列表,它根本不令人满意:
[('anbaglé', ), ('anfoutan', ), ('òrdinè', ), ('alakous', ), ('ayen', ), ('anmè', ), ('antòtiyé', ),...]
这是在简单列表上完美运行的其余代码:
radicals = []
motifp = "^(re|em|dés)"
motifs = "(iste|ment|er|ant|able)$"
for word in words :
word = re.sub(motifp, '', word)
word = re.sub(motifs, '', word)
radicals.append(word)
print(radicals)
ratio = 0.6
n = len(radicals)
result = []
used_js = []
for i in range(n):
if i in used_js:
continue
matches = [words[i]]
js = (x for x in range(n) if x != i and x not in used_js)
for j in js:
if SequenceMatcher(None, radicals[i], radicals[j]).ratio() >= ratio :
matches.append(words[j])
used_js.append(j)
result.append(matches)
print(result)
这是我之前在一个简单列表上测试得到的结果:
[['flore', 'fleur', 'fleuriste'], ['remaniement', 'remanier', 'manier', 'maniable'], ['désaimer', 'aimant', 'aimer'], ['désemmêler', 'emmêler', 'mêler']]
我一定是弄错了整个光标部分,我真的不明白它是如何工作的...谢谢你的帮助!
最佳答案
您可以使用索引对每一行进行索引。此行只有一列,因此您可以使用 0。您也可以通过名称对其进行索引。
# ...
crsr.execute('SELECT unites_lexicales FROM Mot;')
result = crsr.fetchall()
words = []
for row in result:
# words.append(row['unites_lexicales'])
words.append(row[0])
print(words)
# ...
您还可以使用列表理解来获取第一列。
# ...
crsr.execute('SELECT unites_lexicales FROM Mot;')
result = crsr.fetchall()
# words = [row['unites_lexicales'] for row in result]
words = [row[0] for row in result]
print(words)
# ...
关于python - 如何使用带有 pyodbc 的 cursor.fetchall 从数据库中的行创建列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46735437/
我有一个关于 PDO 的问题。 有区别吗 $sql = "SELECT * FROM pages"; $pdo = $this->db->query($sql); $result = $pdo->fe
这个问题最好的标题是“如何将字典列表转换为元组列表”,除非我不能 100% 确定这是正确的。 我正在修改我在网上找到的一个抓取工具,它使用 .fetchall() 从数据库中获取数据。 cur.exe
我有以下代码: $sql = "SELECT table.field, table2.field2 FROM table, table2"; $stmt
我想知道是否有人可以帮助阐明为什么这段 PHP 代码没有进入 for 循环?在 MySQL 中,查询返回我需要的相应行,但在这个 PHP 文件中,它无法将任何内容返回到数组中,因此不执行 foreac
我不断收到错误“AttributeError:‘Cursor’对象没有属性‘fetchAll’”。我的 rowCount 是 451,所有查询都正常。 我已经研究过这个问题,大多数错误都涉及在 cur
我有一个数据库,我正在尝试查询该数据库以获取要显示给用户的信息。我用过 fetch(PDO::FETCH_ASSOC) 检索单行之前或 $row = mysql_fetch_array($result
我完全是 PHP 和 MySQL 领域的新手。我正在读 Kevin Yank 的书,在做他的一个例子时,我遇到了一个奇怪的结果。我确信我遵循并正确输入了他书中写的代码,但我想知道为什么我没有得到相同的
我正在使用 zend 框架开发一个网络应用程序,我希望我的用户能够使用 zend fetchAll 函数从其他用户那里进行搜索。但它返回完整的专栏,我只想要几个值。这是我的示例代码: $query=$
我在 PHP 中有一个函数,它使用 SELECT SQL 查询。我在这样的查询中使用占位符变量 (?)。 (此占位符用于 mysql 数据库中的表名): protected function _fet
所以,这个网站上有很多这个问题的实例。 但是它们中的大多数都混合了一堆其他的东西,比如类、大量的参数等等。 我有一些非常基本的代码,不,真的,可能是最基本的: try { $connectio
我正在使用 fluentpdo - https://github.com/lichtner/fluentpdo 我正在尝试使用此代码将表中的结果循环到 html $bxslider = $fpdo->
这个问题在这里已经有了答案: Call to a member function on a non-object [duplicate] (8 个答案) 关闭 9 年前。 我不知道为什么它会返回 C
我正在使用 Python 从数据库中选择数据。 cur.execute("Select a,b,c from tab1") print "a,b,c" print "\n" data = cur.fe
同一个查询语句: fetchAll(): 复制代码 代码如下: array(1) {  
我想用 limit 做一个 fetchAll() 吗?您知道 symfony2 的实体管理器是否可行吗? 我当前的代码(获取所有,无限制): $repository = $this->getDoctr
我有一个从两个内部连接表中选择的 sql 查询。 select 语句的执行大约需要 50 秒。但是, fetchall() 需要 788 秒,并且只获取 981 个结果。这是查询和 fetchall
我有一个 php 类,用于通过 PDO 运行 SQL 语句。该类将 FetchAll 的数据存储到公共(public)变量中的该查询中,但问题是我不知道查询是什么,所以我最终在数据操作查询(INSER
我通过 ssh 连接到远程服务器,并在那里创建了两个 python 文件作为测试:一个用于创建数据库,另一个用于从中读取数据。 创建数据库的脚本 import os import sqlite3 #
我有这段有效的代码。数据库连接在文件的前面定义,与此处显示无关。安全地假设它工作正常 - 因为它是。 :-) try { $stmt = $conn->prepare("SELECT * FR
当我尝试执行以下代码时,我一直收到一个空数组: $this->DB->prepare('SELECT * FROM Articles WHERE Author = :username AND Time
我是一名优秀的程序员,十分优秀!