【发布时间】:2021-07-08 15:17:29
【问题描述】:
我正在从 DBF 文件中检索数据,我需要生成一个 SQL 脚本来将数据加载到数据库中。我已经有了这个,但是值存储在一个元组中,在我创建 SQL 脚本之前,我想剥离元组的每个项目。例如,我得到这个:
INSERT INTO my_table (col1,col2,col3) VALUES('Value 1 ', 'TESTE123', ' ADAD ')
我需要得到这个:
INSERT INTO my_table (col1,col2,col3) VALUES('Value 1', 'TESTE123', 'ADAD')
为此,我正在尝试使用此代码:
with dbf.Table(filename) as table:
for record in table:
fields = dbf.field_names(table)
fields = ','.join(fields)
place_holders = ','.join(['?'] * len(fields))
values = tuple(record.strip())
sql = "insert into %s (%s) values(%s)" & ('my_table', fields, values)
我收到以下错误: dbf.FieldMissingError: 'STRIP' 表中没有这样的字段
你的目的是什么?
【问题讨论】:
-
&是%的错字吗?不要创建这样的 SQL 查询。 -
@dev_community,您能否扩展 minimal reproducible example 以显示您是如何实际运行查询的?这样我们就可以改变你运行它的方式,将数据从语法中移到带外(使用绑定参数,从而避免在其他情况下遇到的安全陷阱)。
-
values = tuple(s.strip() for s in record)。但是不要像这样构建你的 SQL 语句。使用参数。