python大的字符串怎么办比较好一点
python大的字符串怎么处理比较好一点?
我这里有个sql 语句 一次批量插入比较快
但是 python貌似没有Java 中的 string buffer这个玩意啊 字符串都是不可修改的 每次返还一个新的给我
现在我手头 有200个 字符串 每个都很长
insert to XX values(字符串1),(字符串2),(字符串3).......(字符串200) 这样语句就会很长
我不太清楚python具体机制,但是貌似是把字符串存到一个池中
问题:
1.我的200个字符串 计算出来之后,该怎么保存? 200个string吗?
2.保存之后怎么拼接成sql? 用 % 还是 join 还是循环 +=
我又想速度快 又想占用内存少 有没有办法啊
------解决思路----------------------
1、好像没见过好的方案,静等大神回复;
2、能用join绝对不用+=,这是原则,前者实际快很多很多。
------解决思路----------------------
首先, 出于安全原因, 不要自己攒出sql命令, 而是要用数据库模块提供的参数替换功能.
python sqlite3文档中的例子:
所以就你的情况来讲, 把所有参数的之放到一个列表中, 再准备一个命令模板, 一起传给execute函数.
我这里有个sql 语句 一次批量插入比较快
但是 python貌似没有Java 中的 string buffer这个玩意啊 字符串都是不可修改的 每次返还一个新的给我
现在我手头 有200个 字符串 每个都很长
insert to XX values(字符串1),(字符串2),(字符串3).......(字符串200) 这样语句就会很长
我不太清楚python具体机制,但是貌似是把字符串存到一个池中
问题:
1.我的200个字符串 计算出来之后,该怎么保存? 200个string吗?
2.保存之后怎么拼接成sql? 用 % 还是 join 还是循环 +=
我又想速度快 又想占用内存少 有没有办法啊
------解决思路----------------------
1、好像没见过好的方案,静等大神回复;
2、能用join绝对不用+=,这是原则,前者实际快很多很多。
------解决思路----------------------
首先, 出于安全原因, 不要自己攒出sql命令, 而是要用数据库模块提供的参数替换功能.
python sqlite3文档中的例子:
# Never do this -- insecure!
symbol = 'RHAT'
c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol)
# Do this instead
t = ('RHAT',)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)
print c.fetchone()
# Larger example that inserts many records at a time
purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
('2006-04-06', 'SELL', 'IBM', 500, 53.00),
]
c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)
所以就你的情况来讲, 把所有参数的之放到一个列表中, 再准备一个命令模板, 一起传给execute函数.
In [1]: parameter_list = ','.join(['?']*200) # 200个占位符
In [2]: statement_tmpl = 'insert to XX values (' + parameter_list + ')' # 这儿攒的是模板, 不含有实际要插入的值
In [3]: parameters = [str(i) for i in range(200)]
In [4]: cur.execute(statement_tmpl, parameters)