5

Python コードと SQL データベースを接続したいと考えています。私はそれを行ういくつかの方法を読みましたが、結果を得ることができません。

conn = pymysql.connect(user=X,passwd=X,host=X,port=X,database=X, charset='utf8', autocommit=True)
curs = conn.cursor()

try:
    curs.execute('SELECT id,sing_name,bir_yr FROM singers_list WHERE bir_yr = ? ',year)
    data = curs.fetchall()       
    for i in data:
        yield " Data: " + str(i) + "<br/>"
except:
    yield " Failed to get data from base<br/>"

yearint python 変数です。私は適切な結果を得ています:

curs.execute('SELECT id,sing_name,bir_yr FROM singers_list)

つまり、データベースに正常に接続しています。クエリに変数を含めるにはどうすればよいですか? (整数だけでなく、文字列も、または任意の型)

4

1 に答える 1

7

iterable - 通常はタプル内でパラメーターを渡す必要があります。

query = 'SELECT id,sing_name,bir_yr FROM singers_list WHERE bir_yr = %s'
curs.execute(query, (year, ))

?プレースホルダーも に置き換えたことに注意してください%s

また、MySQL ドライバーは、Python と MySQL の間の型変換を自動的に処理し、必要に応じて引用符を付け、パラメーターをエスケープして、SQL インジェクション攻撃から安全に保つことに注意してください。

于 2016-05-08T00:07:05.047 に答える