2013-02-15 6 views
0

Всего Python newb здесь.Получение «TypeError: целое число требуется» при попытке подключения к MySQL

Я следую руководству от 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 и путь сокета, который я использую, указан в файле my.cnf XAMPP. У меня MySQL работает, а порт - 3306.

Пожалуйста, помогите с этим noob.

код Питон:

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> 

Я думаю, что вам нужно маркировать аргументы в вашу связную функцию, см верхний ответ здесь:

How do I connect to a MySQL Database in Python?

+0

я попробовал, что ранее GOT и ошибки, как: 'аргумент 3 должен иметь тип String'. Я попытался переупорядочить порядок параметров, так что сокет и порт (порт, являющийся числом) являются последними параметрами и по-прежнему получают ту же ошибку. Не уверен, правильно ли я упорядочиваю аргументы. –

+0

Хм. Вы не должны изменять порядок аргументов, если вы не помечаете их, поэтому ваш вызов функции будет выглядеть как «MysqlDB.connect (port = 3306, ...)». Поэтому попробуйте пометить аргументы вашей функции своими именами. – BenDundee

+0

Спасибо! Маркировка их сделала это сработало. –

Смежные вопросы