【问题标题】:Python - Strip each element of a TuplePython - 剥离元组的每个元素
【发布时间】: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 语句。使用参数。

标签: python tuples dbf


【解决方案1】:

dbf.Record 不是str,并且没有字符串方法。

如果记录中的每个字段都是文本(例如 CharacterMemo,而不是 NumericDate),那么您可以:

values = [v.strip() for v in record]

【讨论】:

    猜你喜欢
    • 2020-07-24
    • 1970-01-01
    • 2010-12-05
    • 2013-12-28
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多