2016-11-11 14 views
0

私のSQLクエリが受け入れる文字列にアカウントの値を変換する方法を教えてください。Pythonの 'to SQLクエリパラメータに追加

import pandas as pd 
import os 
from xlwings import Workbook, Range 
from sqlalchemy import create_engine 

account = Range('G2').options(numbers=int).value #account number #value is 3001001000 

sql = 'SELECT top 30 oraclenum,pcat,ConLenses, sum(dollars) as dollars FROM ' \ 
      'ConData WHERE oraclenum = {} group by oraclenum,pcat, ConLenses'.format(account) 

どのように ''の間に値を含めることができますか。私のSQLクエリではWHERE oraclenum = '3001001000'のようです。文字列としてフォーマットされていないと、エラーをスローします。

+0

を考えてみましょうあなたのフォーマット文字列の周りに簡単な引用符を置くことですが、あなたは、あなたのフォーマット式(\'{}\')前後に引用符をエスケープ入れることができます[パラメータ化クエリ](のhttp:/ /docs.sqlalchemy.org/en/latest/core/tutorial.html#specifying-bound-parameter-behaviors) – Lunaweaver

答えて

2

最良の方法は、二重引用符のために引用符を交換し、

sql = "SELECT top 30 oraclenum,pcat,ConLenses, sum(dollars) as dollars FROM " \ 
      "ConData WHERE oraclenum = '{}' group by oraclenum,pcat, ConLenses".format(account) 
+1

複数行の文字列に '' "(三重引用符)を使用することもできますhttp: /stackoverflow.com/questions/10660435/pythonic-way-to-create-a-long-multi-line-string – Lunaweaver

+0

あなたは正しいですが、その場合、1行に2つの文字列があり、連結され、バックスラッシュを使用しています長すぎる行を作成しないようにします。 –

+0

うわー。うん、これは私の問題を解決した!ありがとう。 – Cesar

関連する問題