sql語句中單引號和反引號的區別?
網上說Mysql中字段跟保留字相同時用反引號(鍵盤中ESC鍵下面那個)。但是我的字段跟保留字不一樣,用單引號就報錯,改成反引號就正確了,為什么?。?????
我把存儲到數據庫的完整代碼貼出來(創建表非手動,用代碼實現的),這個代碼能正確運行,請高手看看為什么非要用反引號呢????
#?wiki.py from?urllib.request?import?urlopen from?bs4?import?BeautifulSoup import?re import?pymysql.cursors resp?=?urlopen("https://en.wikipedia.org/wiki/Main_Page").read().decode("utf-8") soup?=?BeautifulSoup(resp,?"html.parser") listUrls?=?soup.findAll("a",?href=re.compile("^/wiki/")) for?url?in?listUrls: if?not?re.search("\.(jpg|JPG)$",?url["href"]): urlname?=?url.get_text() urlhref?=?"https://en.wikipedia.org"?+?url["href"] print(urlname,?"--->?",?urlhref) #?獲取數據庫鏈接 connection?=?pymysql.connect(host="localhost", user="root", password="admin", db="wikiurl", charset="utf8mb4") try: #?獲取會話指針 with?connection.cursor()?as?cursor: #?如果不存在就創建表,字段用反單引號!?。?sql_create_table?=?'''CREATE?TABLE?IF?NOT?EXISTS?`urls`?( `id`?int(11)?NOT?NULL?AUTO_INCREMENT, `urlname`?varchar(255)?NOT?NULL, `urlhref`?varchar(1000)?NOT?NULL, PRIMARY?KEY?(`id`))ENGINE=InnoDB?DEFAULT?CHARSET=utf8?COLLATE=utf8_bin?AUTO_INCREMENT=1''' cursor.execute(sql_create_table) #?創建sql語句 sql_insert?=?'insert?into?urls?(urlname,?urlhref)?values?(%s,?%s)' #?執行sql?語句 cursor.execute(sql_insert,?(urlname,?urlhref)) #?提交 connection.commit() finally: connection.close()
2017-04-03
報什么樣的錯?我試過你的sql語句,去掉反引號也是可以執行的