我正在生成sql查询并在我的字符串上执行了很多+ =操作.看起来像:
insert_string = 'INSERT INTO ' + table_name + ' VALUES '
for row in data_frame.iterrows():
raw_row = row[1].values
insert_string += str(tuple(raw_row))
Run Code Online (Sandbox Code Playgroud)
因此,如果我的insert_string是不可变的,则每个+ =操作都会创建新的字符串.例如,在C#中有StringBuilder类,可以初始化具有给定容量的空字符串.我怎么能用Python做到这一点?
也许最常见的方法是创建所有部分的列表,并使用该str.join方法将它们连接起来,如下所示:
pieces = ['a', 'b', 'c']
text = ''.join(pieces)
assert text == 'abc'
Run Code Online (Sandbox Code Playgroud)
请注意,您将join在分隔符之间调用方法.在前面的示例中,这是空字符串,但在您的情况下,您可能实际上需要类似空格甚至换行符的内容:
pieces = ['a', 'b', 'c']
text = '\n'.join(pieces)
Run Code Online (Sandbox Code Playgroud)
此外,您可以通过使用io.StringIO类获得类似文件的界面:
with io.StringIO() as query_str:
query_str.write('INSERT INTO ')
query_str.write(table_name)
query_str.write(' VALUES ')
for row in data_frame.iterrows():
raw_row = row[1].values
query_str.write(str(tuple(raw_row)))
# Use query_str.getvalue(), as it will be deleted
# when the 'with' scope is finished.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1865 次 |
| 最近记录: |