Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将值从python列表传递到Cassandra查询_Python_Python 2.7_Cassandra - Fatal编程技术网

将值从python列表传递到Cassandra查询

将值从python列表传递到Cassandra查询,python,python-2.7,cassandra,Python,Python 2.7,Cassandra,我是初学者。 我有以下情况 一个文本文件,每行包含一个名称 卡桑德拉3.5数据库 python脚本 目的是让脚本一次从文件中读取一行(一个名称),并用该名称查询Cassandra 仅供参考,除了我尝试将列表的值传递给查询时,其他一切都正常工作 我现在有点像: #... driver import, datetime imports done above #... with open(fname) as f: content = f.readlines() # Loop for each

我是初学者。 我有以下情况

  • 一个文本文件,每行包含一个名称
  • 卡桑德拉3.5数据库
  • python脚本
目的是让脚本一次从文件中读取一行(一个名称),并用该名称查询Cassandra

仅供参考,除了我尝试将列表的值传递给查询时,其他一切都正常工作

我现在有点像:

#... driver import, datetime imports done above
#...

with open(fname) as f:
content = f.readlines()

# Loop for each line from the number of lines in the name list file
# num_of_lines is already set
for x in range(num_of_lines):
    tagname = str(content[x])

    rows = session.execute("""SELECT * FROM tablename where name = %s and date = %s order by time desc limit 1""", (tagname, startDay))
    for row in rows:
        print row.name + ", " + str(row.date)
如果我删除标记名列表组件并用名称值编辑查询本身,一切都会正常工作


我在这里做错了什么?

您可以简单地迭代
内容

for x in content:

    rows = session.execute("SELECT * FROM tablename where name = {} and date = {} order by time desc limit 1".format(x, startDay))
    for row in rows:
        print row.name + ", " + str(row.date)
    ....
此外,字符串不需要有3个引号。单引号就足够了(python中的文档/多行注释使用3个引号)


请注意,这可能会导致不同的错误;但您将在这些行上进行迭代,而不是在索引上进行迭代并读取行。

简单地基于上面@Vinny的答案,格式将简单地替换文本值。你需要在它周围加上引号

for x in content:
    rows = session.execute("SELECT * FROM tablename where name ='{}' and date ='{}' order by time desc limit 1".format(x, startDay))
    for row in rows:
        print row.name + ", " + str(row.date)

你得到了什么奖赏<代码>名称错误:未定义名称“标记名”?还有
标记名=str(内容[x])的预期值是多少
?它可能没有,而且是根本原因。@Vinny不幸的是,我没有得到任何错误。打印行。名称。。。。这根本不是印刷。完全没有错误。现在,tagname=str(content[x])不是none。打印标记名工作正常。谢谢。三个引号,多行。知道了。我修改了密码。这有助于我避免阅读字数。在查询中,我根据您的代码片段将%s更改为{}。我现在遇到以下错误:
TypeError:在字符串格式化过程中并非所有参数都被转换
@bshakya可能是您有一个None对象。在原始打印观察之前,使用调试打印检查标记名的类型
打印类型(x)
print x
显然在其末尾包含一个\n。因此,当我打印它时,我可以看到一个新的行正在打印。我想这可能就是问题所在?如何删除该值并将其转换为纯字符串?
打印类型(x)
的输出是: