2017-06-05 71 views
0
insert_basic = '""' + '"INSERT INTO info VALUES (' + "'" + testid + "','" + username + "','" + fullname + "','" + firstnumber + "','" + secondnumber + "','" + floatnumber + "','" + posts + "','" + country + '","' + bio + '","' + link + '");' 
cur.execute(insert_basic) 
try: 
    db.commit() 
except: 
    db.rollback() 
cur.execute("""SELECT * FROM basic;""") 
print cur.fetchall() 

你好,我做了很多研究,我似乎無法獲得提交給SQL的語法。有些變量是整數,有些是字符串,其中一個是浮點數。用Python添加很多變量到MySQL

回答

2

這是parameterized queries是:

parameters = (testid, username, fullname, firstnumber, secondnumber, floatnumber, posts, country, bio, link) 
query = """ 
    INSERT INTO 
     info 
    VALUES 
     (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""" 
cur.execute(query, parameters) 

當你這樣做,你讓你的MySQL數據庫驅動程序自動處理的Python和MySQL之間的類型轉換。

而且,您還可以保護自己免受SQL injection attacks的影響,這很容易適用於您的字符串連接查詢的初始代碼。


我想在這種情況下,明確也指定表的列名:

INSERT INTO 
    info 
    (column_name1, column_name2, ...) 
VALUES 
    (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)