【问题标题】:how to simplify the so many question mark in the insert string ?如何简化插入字符串中那么多的问号?
【发布时间】:2014-03-23 07:44:24
【问题描述】:

一个数据库中的表有30个字段,当我向表中写入一些数据时,如何处理插入字符串中的?

many="? ,"*30
many=many[0:-1]
db_str='INSERT INTO the_table  VALUES (' + many + ');'
con.executemany(db_str, data)

db_str 很难让人用,我怎样才能让代码看起来很好。

【问题讨论】:

    标签: python


    【解决方案1】:

    我认为更简洁的方法可能是使用join

    parameters = ", ".join(["?"] * 30)
    query = 'INSERT INTO the_table VALUES(%s);' % parameters
    con.executemany(query, data)
    

    【讨论】:

    • @it_is_a_literature 不,这不是不安全的。您完全无法理解此答案和您链接的答案。虽然使用%s 直接将用户输入的数据插入到查询中当然是不安全的,并且会让您对SQL 注入开放,但这里%s 仅用于将参数占位符插入到查询中。这基本上是使用+ 进行字符串连接的更简洁的替代方案。
    • @it_is_a_literature 另一种解释方式是,当您不知道要替换什么时,使用 %s 是不安全的。在这种情况下,我们定义了我们要替换的内容(很多字符串中的问号)。 data 仍在准备中。
    猜你喜欢
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    相关资源
    最近更新 更多