gpt4 book ai didi

Python SQL 单次提交与多次提交

转载 作者:行者123 更新时间:2023-11-28 18:23:07 24 4
gpt4 key购买 nike

我是 Python 的新手,所以我一直在根据我发现的内容编写脚本,并且进展顺利(也就是我的脚本正在运行,即使它们不是最优雅或最正确的)。我的最终目标是获取一个 csv,读取它,找到一个阶段,然后如果找到该短语,则将该行写入 SQL 数据库。我有这个工作,但我的问题是:

我是否应该在 with 的每个循环中编写一个 .execute() 然后 .commit() (这就是我现在在做什么)?或者我应该构建一个语句并在最后执行/提交(不确定如何执行此操作)?我通读了 this post我看到了如何格式化插入,但不确定如何使用我的代码(如下)并进行调整以构建具有多个值的单个插入。任何帮助或建议都是第一种方法就好,或者正确的方法是第二种方法会很棒!提前致谢!

背景:我正在使用 pypyodbc 和虚拟机。 python 脚本与 SQL Express 数据库位于同一台 VM 上。

这是我的代码:

with open(CSVFILE, 'rt', encoding='utf8') as f:
if debug:
print('Inside the with')
reader = csv.reader(f, delimiter=',')
columns = next(reader)
query = 'insert into TABLENAME ({0}) values ({1})'
query = query.format(','.join(columns), ','.join('?' * len(columns)))
for row in reader:
for field in row:
if data.strSearch in field:
if debug:
print('Found: {}'.format(row[0]))
cursor.execute(query, row)
cursor.commit()

最佳答案

虽然您可以将 .commit() 移到循环之外,但您这样做的方式看起来不错,这样您最后只执行一次提交。那可能会快一点。

至于将行添加到列表然后使用 .executemany 的建议,对于 pypyodbc,该方法无论如何都会导致将单独的 INSERT 语句发送到服务器,因此它可能不会有很大的不同。但是,pyodbc 有一个 fast_executemany与您当前的解决方案相比,可能会提供更好性能的选项。

关于Python SQL 单次提交与多次提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43472586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com