Python字符串中的"CREATE"导致KeyError与"'class'"

Nic*_*ico 3 python cassandra nosql keyerror

我正在尝试使用"Python-Driver"为Cassandra(一个NoSQL数据库)创建一类命令.您可以使用session.execute()在数据库上运行SQL命令.无论如何,我正在尝试创建一个函数来创建一个键空间.

这是代码:

def createKeySpace(self, title, class_type='SimpleStrategy', replication_factor='3'):
    self.session.execute("CREATE KEYSPACE {} WITH REPLICATION = \
    { 'class' : '{}', 'replication_factor' : {} };\
    ".format(title, class_type, replication_factor))
Run Code Online (Sandbox Code Playgroud)

问题是,如果我尝试使用此功能,我会收到错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "db_commands.py", line 12, in createKeySpace
    ".format('CREATE', title, class_type, replication_factor))
KeyError: " 'class' "
Run Code Online (Sandbox Code Playgroud)

我认为值得注意的是:我注意到=Sublime Text中我的字符串中的符号是红色,而通常的String颜色是黄色.如果我从字符串中取出"CREATE",等号将返回黄色!

这是因为Python已经将CREATE识别为SQL语法,并且不喜欢我用.format()声明String的方式吗?任何帮助都会很棒!:)

lem*_*ead 6

在使用时,format你需要逃避花瓣括号,例如

"CREATE {} WITH REPLICATION = \
    {{ 'class' : '{}', 'replication_factor' : {}  }};".format('a','b','c')
Run Code Online (Sandbox Code Playgroud)