2017-12-13 6 views
1

私のSQLクエリは次のようになります。DjangoでMySQLのjoinクエリを実行するには?端末内に完全に実行さ

select t.txid, t.from_address, t.to_address, t.value, t.timestamp, 
    t.conformations, t.spent_flag,t.spent_txid from transaction_details t 
    where t.to_address =(select distinct a.address from address_master a 
    inner join panel_user p on a.user = p.user and a.user= "auxesis"); 

今、私はこのようにジャンゴにそれを使用してみました:

sql = """ select t.txid, t.from_address, t.to_address,t.value, t.timestamp, t.conformations, t.spent_flag,t.spent_txid from 
transaction_details t where t.to_address =(select distinct a.address from 
address_master a inner join panel_user p on a.user = p.user and a.user= "%s" """),%(user) 
    cursor.execute(sql) 
    res = cursor.fetchall() 

しかしyaはその作業はありません。だから誰もそれで私を助けてください?

+3

組み込みのORMを使用しないのはなぜですか? –

+1

さらに、SQLコマンドを作成するために文字列補間は絶対に使用しないでください。 –

答えて

0

文字列フォーマットを使用してSQLクエリを作成しようとしています。それをしないで、パラメータ化されたクエリを使用してください。これを行うと、プレースホルダの周りに引用符を追加しないので、データベースコネクタはパラメータのエスケープ処理を行います。引数をタプルとして渡すだけです:

sql = """ select t.txid, t.from_address, t.to_address,t.value, t.timestamp, t.conformations, t.spent_flag,t.spent_txid from 
transaction_details t where t.to_address =(select distinct a.address from 
address_master a inner join panel_user p on a.user = p.user and a.user = %s """) 
cursor.execute(sql, (user,)) 
res = cursor.fetchall() 
関連する問題