Python 模擬試験

Pythonデータ分析実践 模擬試験 第2回 問7・2章 データの種類と読み込み(データベース)

プレースホルダ付き SQL

次のコードを実行したときの出力として、正しいものを1つ選べ。

import pandas as pd
import sqlite3
con = sqlite3.connect(":memory:")
con.execute("create table t (x integer)")
con.executemany("insert into t values (?)", [(1,), (2,), (3,)])
print(pd.read_sql("select x from t where x > ?", con, params=(1,))["x"].tolist())
  1. A

    [2, 3]

  2. B

    [1, 2, 3]

  3. C

    [1]

  4. D

    []

正解と解説を見る

正解:A

SQL に値を渡すときは、文字列の連結ではなく、プレースホルダと params を使う。SQL インジェクションを防げる。

順実行する行実行後の変数
1`import pandas as pd`—
2`import sqlite3`—
3`con = sqlite3.connect(":memory:")`—
4`con.execute("create table t (x integer)")`—
5`con.executemany("insert into t values (?)", […`—
6`print(pd.read_sql("select x from t where x > …`—
結果実際の出力[2, 3]

学習のポイント:プレースホルダの書き方は、データベースの種類で異なる。

この問題を演習で解く →

問題一覧へ

このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。