第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL參數(shù)化查詢

MySQL參數(shù)化查詢

狐的傳說 2019-06-17 15:57:09
MySQL參數(shù)化查詢我很難使用MySQLdb模塊將信息插入到我的數(shù)據(jù)庫中。我需要在表中插入6個變量。cursor.execute ("""     INSERT INTO Songs (SongName, SongArtist, SongAlbum, SongGenre, SongLength, SongLocation)     VALUES         (var1, var2, var3, var4, var5, var6) """)有誰能幫我解決這里的語法問題嗎?
查看完整描述

5 回答

?
千巷貓影

TA貢獻(xiàn)1829條經(jīng)驗 獲得超7個贊

小心在SQL查詢中使用字符串插值,因為它不能正確地轉(zhuǎn)義輸入?yún)?shù),并且會使應(yīng)用程序容易受到SQL注入漏洞的影響。兩者之間的差別似乎微不足道,但在現(xiàn)實中卻是巨大的.

不正確(涉及安全問題)

c.execute("SELECT * FROM foo WHERE bar = %s AND baz = %s" % (param1, param2))

正確(帶轉(zhuǎn)義)

c.execute("SELECT * FROM foo WHERE bar = %s AND baz = %s", (param1, param2))

它增加了這樣的混亂:用于綁定sql語句中的參數(shù)的修飾符在不同的DBAPI實現(xiàn)中和MySQL客戶端庫使用的不同。printf樣式語法,而不是更普遍接受的‘?’標(biāo)記(由例如。python-sqlite).


查看完整回答
反對 回復(fù) 2019-06-17
?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗 獲得超21個贊

你有幾個選擇。您將希望能夠適應(yīng)python的字符串迭代。當(dāng)你想知道這樣的事情時,你可能會在未來的搜索中獲得更多的成功。

更適合查詢:

some_dictionary_with_the_data = {
    'name': 'awesome song',
    'artist': 'some band',
    etc...}cursor.execute ("""
            INSERT INTO Songs (SongName, SongArtist, SongAlbum, SongGenre, SongLength, SongLocation)
            VALUES
                (%(name)s, %(artist)s, %(album)s, %(genre)s, %(length)s, %(location)s)

        """, some_dictionary_with_the_data)

考慮到您可能已經(jīng)在一個對象或字典中擁有所有數(shù)據(jù),第二種格式將更適合您。此外,當(dāng)您必須返回并在一年內(nèi)更新此方法時,必須計算字符串中的“%s”外觀也很糟糕:)


查看完整回答
反對 回復(fù) 2019-06-17
?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗 獲得超8個贊

鏈接的文檔提供了以下示例:

   cursor.execute ("""
         UPDATE animal SET name = %s
         WHERE name = %s
       """, ("snake", "turtle"))
   print "Number of rows updated: %d" % cursor.rowcount

因此,您只需將其改編為您自己的代碼-示例:

cursor.execute ("""
            INSERT INTO Songs (SongName, SongArtist, SongAlbum, SongGenre, SongLength, SongLocation)
            VALUES
                (%s, %s, %s, %s, %s, %s)

        """, (var1, var2, var3, var4, var5, var6))

(如果Song Length是數(shù)字,則可能需要使用%d而不是%s)。


查看完整回答
反對 回復(fù) 2019-06-17
  • 5 回答
  • 0 關(guān)注
  • 1913 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號