查找数据库中的数据行

用户4394017

我的代码需要一些基本的帮助,我想使用带有变量的sqlite3数据库中的数据self.channels_Index

我使用self.channels_Index来定义它,当我每一次加起来的价值,当我在键盘上的向下箭头按钮按下。

所以当我尝试这个:

programs = list()

#get the programs list
profilePath = xbmc.translatePath(os.path.join('special://userdata/addon_data/script.tvguide', 'source.db'))
con = database.connect(profilePath)
cur = con.cursor()
cur.execute('SELECT channel, title, start_date, stop_date FROM programs WHERE channel=?', [self.channels_Index])
programs = cur.fetchall()
start_pos = 375    # indent for first program
print program

for ind, row in enumerate(programs):
    program = row[1].encode('ascii'), str(row[2]), str(row[3])

我将得到如下结果:

17:58:26 T:4976  NOTICE: []

我的数据库:

ABC Family
ABC Family
ABC Family
ABC Family
ABC Family
..etc until to 69 rows
CBS
CBS
CBS
CBS
CBS
..etc until to 69 rows
ESPN
ESPN
ESPN
ESPN
ESPN
..etc until to 69 rows
FOX NEWS
FOX NEWS
FOX NEWS
FOX NEWS
FOX NEWS
FOX NEWS
..etc until to 69 rows

我想要实现的是在self.channels_Index显示为7时发现数据库中的行,或者我想将其乘以69倍,然后在打印数据列表之前先获得69行数据。

示例:当self.channels_Index显示为4时,我想查找FOX NEWS数据库中的行以获取69次完整数据,然后打印FOX NEWS数据列表

与我一起使用时,能为我提供帮助self.channels_Index吗?

编辑:当我尝试这样做:

cur = con.cursor()
cur.execute('SELECT DISTINCT channel FROM programs;')
channel_list = sorted(row[0] for row in cur.fetchall())
cur.execute('SELECT title, start_date, stop_date FROM programs WHERE channel=?;', channel_list[self.channels_Index])
programs = cur.fetchall()

它给我错误:ProgrammingError:提供的绑定数不正确。当前语句使用1,并且提供了10。

空气

看起来您正在使用channels_Index变量来引用第i通道,通道按升序按字母顺序排序。在数据库中,没有保证的排序顺序,因此您必须首先确定第i通道的名称纯SQL方式将是使用对数据进行显式排序的查询。例如,此查询将按字母顺序为您提供第三个渠道:

SELECT DISTINCT channel FROM programs ORDER BY channel ASC LIMIT 1 OFFSET 2;

但是您希望能够浏览不同的渠道,而该OFFSET值不是您可以在查询中进行参数化值。更好的解决方案可能是先获取所有通道名称,然后使用Python对其进行排序:

cur.execute('SELECT DISTINCT channel FROM programs;')
channel_list = sorted(row[0] for row in cur.fetchall())

现在,您可以通过将索引应用于第i通道并将channel_list结果传递给查询来引用第i通道

cur.execute('SELECT title, start_date, stop_date FROM programs WHERE channel=?;',
            (channel_list[self.channels_Index],))

您无需选择,channel因为您已经知道其价值。无论您的数据库中每个通道对应多少行,该方法都有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找数据库中的数据行

来自分类Dev

如何从数据库中查找数据

来自分类Dev

在数据库中查找表

来自分类Dev

在数据库中查找号码

来自分类Dev

在sqlite数据库中查找值

来自分类Dev

从Hadoop端在Relation数据库中查找数据

来自分类Dev

查找和替换MySql数据库中的数据

来自分类Dev

从多个数据库中查找多个数据

来自分类Dev

在android中的sqlite数据库中查找属于同一行的记录

来自分类Dev

数据库:计算表中的行

来自分类Dev

删除数据库中的行

来自分类Dev

无法更新数据库中的行

来自分类Dev

Android从数据库中删除行

来自分类Dev

无法从数据库中删除行

来自分类Dev

删除数据库中的行

来自分类Dev

在管道分隔列中查找匹配的MySQL数据库行

来自分类Dev

QDataWidgetMapper-查找PyQt中的SQLite数据库行的索引

来自分类Dev

Yii:编写SQL查询以查找数据库中的重复行

来自分类Dev

cakePHP:通过使用除主键以外的其他字段在数据库中查找行?

来自分类Dev

从Excel VBA查找CSV数据库中的最后一行

来自分类Dev

自动从数据库查找数据模式

来自分类Dev

在尝试插入数据库之前查找数据库中的现有条目

来自分类Dev

从数据库中删除行的某些部分(数据库行集合中的值)

来自分类Dev

使用href从数据库中删除数据行

来自分类Dev

以表格形式加载数据并更新数据库中的行

来自分类Dev

从数据库行中获取数据并填充选择标签

来自分类Dev

显示数据库中的所有数据行

来自分类Dev

从数组中的数据创建新的数据库行?

来自分类Dev

在数据库中查找特定字段的重复条目