| #!/usr/bin/env python |
| |
| # Copyright DataStax, Inc. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| import logging |
| |
| log = logging.getLogger() |
| log.setLevel('DEBUG') |
| handler = logging.StreamHandler() |
| handler.setFormatter(logging.Formatter("%(asctime)s [%(levelname)s] %(name)s: %(message)s")) |
| log.addHandler(handler) |
| |
| from cassandra import ConsistencyLevel |
| from cassandra.cluster import Cluster |
| from cassandra.query import SimpleStatement |
| |
| KEYSPACE = "testkeyspace" |
| |
| |
| def main(): |
| cluster = Cluster(['127.0.0.1']) |
| session = cluster.connect() |
| |
| log.info("creating keyspace...") |
| session.execute(""" |
| CREATE KEYSPACE IF NOT EXISTS %s |
| WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': '2' } |
| """ % KEYSPACE) |
| |
| log.info("setting keyspace...") |
| session.set_keyspace(KEYSPACE) |
| |
| log.info("creating table...") |
| session.execute(""" |
| CREATE TABLE IF NOT EXISTS mytable ( |
| thekey text, |
| col1 text, |
| col2 text, |
| PRIMARY KEY (thekey, col1) |
| ) |
| """) |
| |
| query = SimpleStatement(""" |
| INSERT INTO mytable (thekey, col1, col2) |
| VALUES (%(key)s, %(a)s, %(b)s) |
| """, consistency_level=ConsistencyLevel.ONE) |
| |
| prepared = session.prepare(""" |
| INSERT INTO mytable (thekey, col1, col2) |
| VALUES (?, ?, ?) |
| """) |
| |
| for i in range(10): |
| log.info("inserting row %d" % i) |
| session.execute(query, dict(key="key%d" % i, a='a', b='b')) |
| session.execute(prepared, ("key%d" % i, 'b', 'b')) |
| |
| future = session.execute_async("SELECT * FROM mytable") |
| log.info("key\tcol1\tcol2") |
| log.info("---\t----\t----") |
| |
| try: |
| rows = future.result() |
| except Exception: |
| log.exception("Error reading rows:") |
| return |
| |
| for row in rows: |
| log.info('\t'.join(row)) |
| |
| session.execute("DROP KEYSPACE " + KEYSPACE) |
| |
| if __name__ == "__main__": |
| main() |