2015-11-28 4 views
-1

Я пытаюсь пропустить содержимое дешифрованного файла, хранящегося в переменной «decrypt», и записать это содержимое в таблицу базы данных MySQL (data_1)., пожалуйста, помогите мне определить смысл этой ошибки.

Пожалуйста, помогите мне определить, что означает эта ошибка, а также возможная работа вокруг ошибки.

>>> import gnupg 
>>> import csv 
>>> import MySQLdb 
>>> import StringIO 
>>> import io 
>>> gpg = gnupg.GPG(gnupghome="/home/chefgit/Desktop/.gnupg") 
>>> file = open("/home/chefgit/Desktop/file_10.gpg", 'r+') 
>>> decrypt=gpg.decrypt_file(file) 
>>> connect = MySQLdb.connect('localhost', 'chefgit', 'taku99', 'python_db_1') 
>>> cursor = connect.cursor() 
>>> sql = "INSERT INTO data_1 ('id', 'first_name', 'last_name', 'email','country', 'ip_address')VALUES('%d','%s','%s','%s','%s','%s')" 
>>> csv_input=csv.reader(StringIO.StringIO(decrypt)) 
>>> for row in csv_input: 
... cursor.execute(sql,row) 
... 
Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
    File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 187, in execute 
    query = query % tuple([db.literal(item) for item in args]) 
TypeError: %d format: a number is required, not str 
>>> csv_input=csv.reader(StringIO.StringIO(decrypt)) 
>>> for row in csv_input: 
... cursor.executemany(sql, row) 
... 
Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
    File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 237, in executemany 
    r = r + self.execute(query, a) 
    File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 187, in execute 
    query = query % tuple([db.literal(item) for item in args]) 
TypeError: %d format: a number is required, not str 
>>> csv_input = csv.reader(StringIO.StringIO(decrypt)) 
>>> for row in csv_input: 
... print(row) 
... 
['obin', 'Mitchell', '[email protected]', 'Czech Republic', '247.22.171.221'] 
['2', 'Kathy', 'Wheeler', '[email protected]', 'Indonesia', '90.207.243.94'] 
['3', 'Johnny', 'Grant', '[email protected]', 'Cyprus', '40.53.219.97'] 
['4', 'Henry', 'Dunn', '[email protected]', 'China', '75.234.225.243'] 
['5', 'Craig', 'Holmes', '[email protected]', 'Ukraine', '218.128.169.131'] 
['6', 'Phillip', 'Shaw', '[email protected]', 'France', '96.80.252.82'] 
['7', 'Lillian', 'Peterson', '[email protected]', 'Russia', '104.156.33.182'] 
['8', 'Linda', 'Hall', '[email protected]', 'China', '253.195.137.88'] 
['9', 'Denise', 'Patterson', '[email protected]', 'Kazakhstan', '71.170.34.130'] 
[] 
+0

Спасибо для ответа. так как я могу исправить это в своем коде. Любые идеи? – user3530362

+0

теперь он выдает эту ошибку: TypeError: недостаточно аргументов для строки формата – user3530362

ответ

0

Один из столбца, указанный в ID, которые ожидают номера в качестве значения, и вы пытаетесь вставить «Обин» в качестве значения идентификатора в базе данных, то база данных передних говоря, что

TypeError: %d format: a number is required, not str 
+0

Я достал эту строку, содержащую «obin». И я запускаю тот же код, и он по-прежнему дает ту же ошибку. Пожалуйста помоги. – user3530362

+0

Это может быть из-за последней строки, которая читается как «[]» пустой список –

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