我與Oracle數據庫操作的數據庫查詢大熊貓數據幀。我可以這樣做了:創建從使用綁定變量
import pandas as pd
import pandas.io.sql as psql
import cx_Oracle as odb
conn = odb.connect(_user +'/'+ _pass +'@'+ _dbenv)
sqlStr = "SELECT * FROM customers"
df = psql.frame_query(sqlStr, conn)
但我不知道如何處理綁定變量,就像這樣:
sqlStr = """SELECT * FROM customers
WHERE id BETWEEN :v1 AND :v2
"""
我已經試過這些變化:
params = (1234, 5678)
params2 = {"v1":1234, "v2":5678}
df = psql.frame_query((sqlStr,params), conn)
df = psql.frame_query((sqlStr,params2), conn)
df = psql.frame_query(sqlStr,params, conn)
df = psql.frame_query(sqlStr,params2, conn)
的以下作品:
curs = conn.cursor()
curs.execute(sqlStr, params)
df = pd.DataFrame(curs.fetchall())
df.columns = [rec[0] for rec in curs.description]
但這個解決方案離子只是...不雅。如果可以,我想在不創建遊標對象的情況下執行此操作。有沒有辦法只用熊貓來做整個事情?
我會強烈建議不要形成你的SQL,因爲它讓你的代碼容易受到SQL注入攻擊這種方式。即使你的代碼/數據庫不處於易受攻擊的地位,你也不應該以這種方式形成你的SQL。綁定變量是安全的方法。 – 2013-02-15 15:34:42
@DavidMarx同意。我不應該像以前那樣假設OP是從命令行(或者只是一個基本腳本)開始工作的。 – 2013-02-15 16:25:18
[僅供參考:我是OP]是的,這是一個自包含的文件。在目前的程序中,我沒有預見到任何SQL注入的真正問題,因爲使用它的人可以直接訪問數據庫,但我想知道未來是否可以像我一樣使用熊貓描述。 – 2013-02-15 20:59:43