Python - 如何在sql查询执行中摆脱转义序列

时间:2016-05-02 14:52:08

标签: python sql database

我在python中创建一个sql查询:

select lastupdatedatetime from auth_principal_entity where lastupdateddatetime < '02-05-16 03:46:51:527000000 PM'

执行时,会添加一些转义序列,但不会给我回答答案。

虽然当我们在stdout中打印它时,它看起来很完美,但是对于python的理解它具有我在执行命令中不想要的转义序列

'select lastupdatedatetime from auth_principal_entity where lastupdateddatetime < \\'02-05-16 03:50:14:388000000 PM\\''

2 个答案:

答案 0 :(得分:1)

转义序列不会导致cursor.execute(查询)出现任何问题 真正的问题在于发送日期,因为字符串用于比较和返回db中的值,这些值是日期 - 对象格式。

所以这样的事情应该有效。

query = "SELECT LASTUPDATEDDATETIME FROM AUTH_PRINCIPAL_ENTITY WHERE LASTUPDATEDDATETIME < to_date('03-May-16', 'dd-mon-yy')"

或者

date_ = datetime.datetime.now().strftime('%d-%b-%y')
query = "SELECT LASTUPDATEDDATETIME FROM AUTH_PRINCIPAL_ENTITY WHERE LASTUPDATEDDATETIME < to_date('{}', 'dd-mon-yy')".format(date_)

试试吧。应该适合你: - )

答案 1 :(得分:-1)

对我来说,我将SQL语句包装在三引号中,以便在执行时不会遇到这些问题:

query = """
    select lastupdatedatetime from auth_principal_entity where lastupdateddatetime < '02-05-16 03:46:51:527000000 PM'
    """