2014-12-12 5 views
2

Начало моего кода является:AttributeError: «модуль» объект не имеет «соединение» атрибут

import sqlite3 

def construct_query(card_name, card_type,card_type_whole, power, tough, card_text, exp,rare): 

    query = "INSERT INTO CardComponet (all column names) VALUES ('{}','{}',{},{},'{}','{}','{}')".format(card_name, card_type_whole, power, tough, card_text, exp,rare) 
    return query 

path_to_flat_file = 'C:\Users\Mrs Rose\Desktop\inputf.txt' 

flat_file_object = open(path_to_flat_file, 'r') 

connection = sqlite3.connection('practice1.db') 

cursor = connection.cursor() 

Но моя ошибка:

Traceback (most recent call last): 
    File "C:\Users\Mrs rose\Desktop\FinalProject.py", line 11, in <module> 
    connection = sqlite3.connection('practice1.db') 
AttributeError: 'module' object has no attribute 'connection' 

Я попытался изменить мое .py имя и мой мое имя базы данных, но ничего не работает. Пожалуйста, помоги, если можешь.

+1

Я думаю, вы имели в виду: 'connection = sqlite3.connect ('practice1.db')' – bernie

ответ

0

sqlite3.connection не существует. Функция вы ищете называется sqlite3.connect:

>>> import sqlite3 
>>> sqlite3.connect 
<built-in function connect> 
>>> 

Кроме того, вы никогда не должны использовать str.format или аналогичные инструменты для вставки значений в запросе. Из docs:

Usually your SQL operations will need to use values from Python variables. You shouldn’t assemble your query using Python’s string operations because doing so is insecure; it makes your program vulnerable to an SQL injection attack (see http://xkcd.com/327/ for humorous example of what can go wrong).

Instead, use the DB-API's parameter substitution. Put ? as a placeholder wherever you want to use a value, and then provide a tuple of values as the second argument to the cursor's execute() method. (Other database modules may use a different placeholder, such as %s or :1 .)

+0

спасибо, много! Я вообще не знаком с python –

+0

Так я действительно пробовал? и я получил эту ошибку -> OperationalError: попытаться написать базу данных только для чтения –

+0

Это не проблема с '?'. Ваша база данных только для чтения. Значит, вы не можете редактировать его содержимое, а только читать. – iCodez

0

модуль sqlite3 не имеет атрибут с именем «соединение» оно тем не менее имеет атрибут с именем подключения. Вы должны попробовать «соединение = sqlite3.connect (» practice1.db «)»

0

Я вижу несколько возможных ошибок:

  1. Из пути к файлу, я предполагаю, что вы находитесь на окне. Ну, вам нужно изменить путь к файлу: C:\\Users\\Mrs Rose\\Desktop\\, чтобы избежать путаницы в качестве экранированного символа.

  2. На моей IDE модуль sqlite3 не имеет способа connection .. может быть connect?

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