2017-08-10 81 views
1

這是使用MySQLdb的與python3.6防止SQL注入MySQLdb的python3.6

import MySQLdb 

# start connection 
db = MySQLdb.connect("localhost", "root", "asdf", "projecten") 

# create cursor 
c = db.cursor() 

# insert multiple records using a tuple 
cities = [ 
    ('Boston', 'MA', 600000), 
    ('Chicago', 'IL', 2700000), 
    ('Houston', 'TX', 2100000), 
    ('Phoenix', 'AZ', 1500000) 
] 

# sql statement 
sql = "INSERT INTO projecten.population(city, state, population) VALUES(%s, %s, %s)" 

# insert data into table with list cities 
c.executemany(sql, cities) 

# commit changes 
db.commit() 

# close connection 
db.close() 

我的腳本這是對安全的SQL注入,因爲一些人使用?代替%S,但是,python3.6不工作

+1

你的問題到底是什麼?因爲你使用%s而不是... –

回答

0

作爲Bruno says in an answer到一個相關的問題:

爲了避免注射,代替各變量的使用execute%s,然後通過經由值列表或元組作爲execute的第二個參數。

在此之後的建議,您可以創建這樣的SQL:

sql ="""INSERT INTO projecten.population (city, state, population) 
     VALUES (%s, %s, %s)""" 

c.executemany(sql, cities) 

這比你現在所擁有的一個更安全的方法。

+0

所以我的腳本是安全的 –

+0

不完全。我已更新我的回覆。再次檢查 – nagendra547

+0

是不是我已經在我的代碼 –