2016-05-02 36 views
2

我在排序的蟒蛇創建SQL查詢:Python的 - 如何在SQL查詢執行擺脫轉義序列

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

當執行,有被添加其中沒有按轉義序列我不回答我的答案。

雖然當我們在標準輸出打印出來,它看起來很完美,但對Python的理解有逃避,我不希望在執行命令序列

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

回答

1

的轉義序列不會導致cursor.execute(查詢)的任何問題 真正的問題在於,正在日期作爲一個字符串發送被用來比較一個nd返回數據庫中的日期對象格式的值。

所以像這樣的東西應該工作。

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

對於我來說,我總結我的SQL語句三重引號,因此不會遇到這些問題時,我執行:

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

我已經嘗試使用三重引號,不適合我。 – Ayush

+0

什麼是你使用的數據庫驅動程序和Python模塊? –

+0

我正在使用cx_Oracle模塊 con = cx_Oracle.connect('user/passwd @ dbname') – Ayush