multilinestring - python 三連引用符 変数 - 長い複数行の文字列を作成するピソニックな方法

python 複数行コメント / python / string / multiline

非常に長いクエリがあります。 Pythonで数行に分割したいと思います。 JavaScriptでそれを行う方法は、いくつかの文を使用し、それらを + 演算子で結合することです(おそらくそれは最も効率的な方法ではないかもしれませんが、この段階でのパフォーマンスについてはあまり気にせず、コードの可読性だけです)。例:

var long_string = 'some text not important. just garbage to' +
                  'illustrate my example';
query = 'SELECT action.descr as "action", '\
    'role.id as role_id,'\
    'role.descr as role'\
    'FROM '\
    'public.role_action_def,'\
    'public.role,'\
    'public.record_def, '\
    'public.action'\
    'WHERE role.id = role_action_def.role_id AND'\
    'record_def.id = role_action_def.def_id AND'\
    'action.id = role_action_def.action_id AND'\
    'role_action_def.account_id = ' + account_id + ' AND'\
    'record_def.account_id=' + account_id + ' AND'\
    'def_id=' + def_id

U11-Forward



Answer #1

個人的には、特にPythonのsqlite3モジュールを使用する場合、Pythonで生のSQLクエリを作成するための最良の(シンプルで安全なPythonic)方法は次のとおりです。

query = '''
    SELECT
        action.descr as action,
        role.id as role_id,
        role.descr as role
    FROM
        public.role_action_def,
        public.role,
        public.record_def,
        public.action
    WHERE
        role.id = role_action_def.role_id
        AND record_def.id = role_action_def.def_id
        AND action.id = role_action_def.action_id
        AND role_action_def.account_id = ?
        AND record_def.account_id = ?
        AND def_id = ?
'''
vars = (account_id, account_id, def_id)   #クエリ変数のタプル
cursor.execute(query, vars)   #Pythonのsqlite3モジュールを使用