0
Apache Cassandraデータベース(Rest Api)のキースペースをリストするには、次のコードがあります。問題は2.0で行われたApache Cassandraデータベースのコードバージョンです。 schema_keyspacesからCassandra Python RestApiを修正しました
選択keyspace_nameは、バージョン3.0では動作しません。また、私は、クエリを置き換える場合:
from math import ceil
class Pagination(object):
def __init__(self, page, per_page, total_count):
self.page = page
self.per_page = per_page
self.total_count = total_count
@property
def pages(self):
return int(ceil(self.total_count/float(self.per_page)))
@property
def has_prev(self):
return self.page > 1
@property
def has_next(self):
return self.page < self.pages
def iter_pages(self, left_edge=2, left_current=2,
right_current=5, right_edge=2):
last = 0
for num in xrange(1, self.pages + 1):
if num <= left_edge or \
(num > self.page - left_current - 1 and \
num < self.page + right_current) or \
num > self.pages - right_edge:
if last + 1 != num:
yield None
yield num
last = num
@app.route('/keyspaces/', defaults={'page': 1}, methods=['GET'])
@app.route('/keyspaces/page/<int:page>', methods=['GET'])
def getKeyspaces(page):
auth_provider = PlainTextAuthProvider(username='admin',
password='root')
cluster = Cluster(['hostname'],
auth_provider=auth_provider)
session = cluster.connect()
rows = session.execute('select keyspace_name from schema_keyspaces')
keyspaces = []
for row in range(len(rows)):
keyspaces.append(rows[row][0])
pages = keyspaces[(page - 1) * PER_PAGE:PER_PAGE * page]
if not pages and page != 1:
abort(404)
pagination = Pagination(page, PER_PAGE, len(rows))
return render_template('listkeyspace.html',
pagination=pagination, pages=pages,
section='getKeyspaces')
私はあなたが言ったことをするときに別の間違いがあります: RuntimeError:結果が反復されたときにインデックス演算子を使用できません。 On keyspaces.append(rows [row] [0]) –
右。上で述べたように、ループの本体を通して、 'rows'のすべてのインスタンスを' row_list'に変更する必要もあります。だから 'keyspaces.append(rows [row] [0])'は 'keyspaces.append(row_list [row] [0]) 'になるはずです –
良いです、それは作品です、私のfreindありがとう;) –