2013-02-15 76 views
0

Python newb在這裏。當試圖連接到MySQL時,獲取「TypeError:一個整數是必需的」

我正在關注this page的教程。但是當我運行我的代碼時,在控制檯中出現以下錯誤。

Traceback (most recent call last): 
    File "/Users/tejenshrestha/Documents/ProjectAccess/access/trunk/analysis/src/json_xml/Database.py", line 37, in <module> 
    con = MySQLdb.connect(socket, dbhost, dbuser, dbpass, dbname); 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect 
    return Connection(*args, **kwargs) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQLdb/connections.py", line 187, in __init__ 
    super(Connection, self).__init__(*args, **kwargs2) 
TypeError: an integer is required 

搜索一些解決方案,我發現需要將unix_socket路徑是包括,我做到了,你可以看到。

我也在使用XAMPP並且我使用的套接字路徑是在XAMPP的my.cnf文件中指定的路徑。我有MySQL運行和端口它是3306.

請幫助這個noob。

的Python代碼:

import MySQLdb 
import sys 

con = None 
dbhost = "localhost" 
port = "3306" 
dbuser = "root" 
dbpass = "password" 
dbname = "name" 
socket = "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock" 

try: 
    con = MySQLdb.connect(socket, dbhost, dbuser, dbpass, dbname); 
    cur = con.cursor() 
    cur.execute("SELECT VERSION()") 

    data = cur.fetchone() 
    print "Database version : %s " % data 

except MySQLdb.Error, e: 
    print "Error %d: %s" % (e.args[0],e.args[1]) 
    sys.exit(1) 

finally:  
    if con:  
     con.close() 

回答

4

從各地端口以引號,看看是否可行。


<brilliant code> 
port = 3306 
<brilliant code> 

我認爲你需要標註的參數在Connect功能,看到上面的答案在這裏:

How do I connect to a MySQL Database in Python?

+0

我想,以前的GOT和錯誤,如:參數3必須是String類型。我嘗試重新排列參數的順序,以便套接字和端口(端口是數字)是最後一個參數,仍然會得到相同的錯誤。不知道我是否正確地排列了參數。 – 2013-02-15 19:25:21

+0

嗯。你不應該改變參數的順序,除非你標記它們,所以你的函數調用看起來像'MysqlDB.connect(port = 3306,...)'。所以試着用你的專有名稱來標記你的函數的參數。 – BenDundee 2013-02-15 19:27:48

+0

謝謝!標記它們使它工作。 – 2013-02-15 19:31:40

相關問題