安装包
pip install cassandra-driver
使用
最简单的连接
from cassandra.cluster import Cluster
cluster = Cluster(['192.168.92.159', '192.168.92.160','192.168.92.161'])
session = cluster.connect('ycsb')
print(session)
查询所有命名空间
from cassandra.cluster import Cluster
# 连接到Cassandra数据库
cluster = Cluster(['192.168.92.159', '192.168.92.160','192.168.92.161'])
session = cluster.connect()
# 查询所有的keyspace
keyspaces = session.execute("SELECT keyspace_name FROM system_schema.keyspaces;")
# 打印keyspace列表
for keyspace in keyspaces:
print(keyspace.keyspace_name)
查询命名空间是否存在,没有则创建
from cassandra.cluster import Cluster
# 连接到Cassandra数据库
cluster = Cluster(['192.168.92.159', '192.168.92.160','192.168.92.161'])
session = cluster.connect()
# 查询keyspace是否存在
keyspace_name = 'seimic_keyspace'
keyspace_query = f"SELECT keyspace_name FROM system_schema.keyspaces WHERE keyspace_name = '{keyspace_name}';"
keyspace_exists = bool(session.execute(keyspace_query).one())
if not keyspace_exists:
# 创建keyspace
create_keyspace_query = f"CREATE KEYSPACE {keyspace_name} WITH replication = {{'class': 'SimpleStrategy', 'replication_factor': 1}};"
session.execute(create_keyspace_query)
# 使用新的或现有的keyspace
session.set_keyspace(keyspace_name)
创建表
from cassandra.cluster import Cluster
def create_table(keyspace_name, table_name):
# 连接到Cassandra数据库
cluster = Cluster(['192.168.92.159', '192.168.92.160','192.168.92.161'])
session = cluster.connect(keyspace_name)
# 定义创建表的CQL命令
create_table_query = f"""
CREATE TABLE IF NOT EXISTS {table_name} (
id UUID PRIMARY KEY,
name text,
age int
);
"""
# 执行创建表命令
session.execute(create_table_query)
# 关闭连接
cluster.shutdown()
# 调用函数,传入keyspace名称和要创建的表名称
keyspace_name = 'seimic_keyspace'
table_name = 'project'
create_table(keyspace_name, table_name)
查询表
def query_tables_in_keyspace(keyspace_name):
# 连接到Cassandra数据库
cluster = Cluster(['192.168.92.159', '192.168.92.160','192.168.92.161'])
session = cluster.connect(keyspace_name)
# 查询当前keyspace中的所有表
tables_query = "SELECT table_name FROM system_schema.tables WHERE keyspace_name = %s;"
result = session.execute(tables_query, [keyspace_name])
# 打印表名
for row in result:
print(row.table_name)
# 关闭连接
cluster.shutdown()
# 调用函数,传入keyspace名称
keyspace_name = 'seimic_keyspace'
query_tables_in_keyspace(keyspace_name)
查询表里的字段
from cassandra.cluster import Cluster
cassandra_host =['192.168.92.159', '192.168.92.160','192.168.92.161']
# 连接到Cassandra集群
cluster = Cluster(cassandra_host) # 替换为实际的Cassandra主机地址
session = cluster.connect()
# 指定要查询的keyspace和table名称
keyspace_name = 'seismic_keyspace'
table_name = 'project_chunks_table'
# 切换到指定keyspace
session.set_keyspace(keyspace_name)
# 查询表的元数据
query = f"SELECT column_name, type FROM system_schema.columns WHERE keyspace_name = '{keyspace_name}' AND table_name = '{table_name}'"
result = session.execute(query)
# 输出字段信息
for row in result:
print(f"Column Name: {row.column_name}, Type: {row.type}")
# 关闭连接
session.shutdown()
cluster.shutdown()
删除表
from cassandra.cluster import Cluster
your_cassandra_host = ['192.168.92.159', '192.168.92.160','192.168.92.161']
# 连接到Cassandra集群
cluster = Cluster(your_cassandra_host) # 替换为实际的Cassandra主机地址
session = cluster.connect()
# 指定要删除的keyspace和table名称
keyspace_name = 'seismic_keyspace'
table_name = 'project_chunks_table'
# 构建删除表的CQL查询语句
drop_table_query = f"DROP TABLE IF EXISTS {keyspace_name}.{table_name}"
# 执行删除表操作
session.execute(drop_table_query)
# 关闭连接
session.shutdown()
cluster.shutdown()