2013-06-22 50 views
0

我希望有人能幫助我嗎?我正在嘗試使用Python 2.7和MySQLdb庫來填充MySQL數據庫。我已經寫了下面的示例腳本,但無論我嘗試什麼,我都無法使其工作。MySQLdb/Python/LocalHost - 查詢運行時沒有錯誤,但沒有結果

代碼運行時沒有錯誤(當我運行代碼時它會打印'Done',但就是這樣),當我直接在phpMyAdmin中嘗試查詢時,它工作正常,出於某種原因,我無法使其工作從Python內部。

我錯過了什麼嗎?有什麼我需要在phpMyAdmin中激活才能使其工作?我在下午的大部分時間裏一直在尋找答案,當其他人遇到類似問題時,雖然他們傾向於獲取錯誤消息(我不知道)。

import MySQLdb 

# Define the database access details 
DB_HOST = "localhost" 
DB_USER = "username" 
DB_PASSWORD = "secretpassword" 
DB_NAME = "TestDatabase" 

# Establish the connection to the database 
db = MySQLdb.connect(
        host=DB_HOST, 
        user=DB_USER, 
        passwd=DB_PASSWORD, 
        db=DB_NAME 
        ) 
cur = db.cursor() 

Query = "INSERT INTO SearchResults (`TimeStamp`, `SearchTerm`, `SearchResult`) VALUES ('2013-06-22 17:28:09', 'TestSearchTerm', 'Test Search Result');" 
cur.execute(Query) 

print"Done" 

這是我的第一次經歷,因此如果我忽略了一些明顯的東西,請原諒我!任何幫助,將不勝感激!

+1

嘗試在'cur.execute(Query)'後面調用'db.commit()'。 – unutbu

+0

複製http://stackoverflow.com/questions/384228/database-does-not-update-automatically-with-mysql-and-python –

+0

'db.commit()'工作,感謝您的幫助! – AdamDynamic

回答

2

您可能需要commit()您的更改。


因爲這是你的「初體驗」的一些說明:

根據您的「數據庫引擎」的功能,當你修改你的數據,你的變化是不是直接對「外面的世界可見」。鬆散地說,您的更改對您的數據庫連接是「私有」的。

這是一個非常重要的功能。除此之外,這有助於您進行多項修改,並一次性「發佈」它們。另一個好處是,如果您在某些時候決定修改無效,則可以「取消」它們而不會打擾數據庫的任何其他用戶。

這樣做的一個小缺點是,您必須在準備好發佈它們後明確提交您的更改。否則,一旦連接關閉,它們就會消失。您還必須有機會設置「自動提交」 - 即在每次向數據庫請求後都會有一個隱式提交。根據您的需求,這可能是一個選項。總結:

  • 以「發佈」你的變化到DB:使用db.commit()
  • 爲「取消」你到數據庫的變化:用db.rollback()或者只是關閉而沒有提交連接,
  • 承諾隱含在每個請求之後:db.autocommit(True)

DBA和其他數據庫專家可能會因爲過分簡化上述段落而大叫我。但我希望這能幫助你理解發生了什麼!

+0

知道這將是小事和愚蠢。謝謝您的幫助! – AdamDynamic