我的代码的开头是:
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名称和我的数据库名称,但没有任何工作。如果可以的话请帮忙。
答案 0 :(得分:0)
sqlite3.connection
不存在。您正在寻找的功能称为sqlite3.connect
:
>>> import sqlite3
>>> sqlite3.connect
<built-in function connect>
>>>
此外,您绝不应使用str.format
或类似工具将值插入查询中。来自docs:
通常,您的SQL操作需要使用Python中的值 变量。您不应该使用Python的字符串汇编查询 因为这样做是不安全的;它使你的程序 容易受到SQL注入攻击(请参阅http://xkcd.com/327/) 什么可能出错的幽默例子。)
相反,请使用DB-API的参数替换。把
?
作为一个 占位符,无论您想要使用哪个值,然后提供元组 value作为游标execute()
方法的第二个参数。 (其他数据库模块可能使用不同的占位符,例如%s
或:1
。)
答案 1 :(得分:0)
sqlite3模块没有名为“connection”的属性,但它有一个名为connect的属性。你应该尝试'connection = sqlite3.connect('practice1.db')'
答案 2 :(得分:0)
我看到了几个可能的错误:
从文件路径,我猜你在窗口。好吧,您需要更改文件路径:C:\\Users\\Mrs Rose\\Desktop\\
以避免被混淆为转义字符。
在我的IDE上,sqlite3
模块没有方法connection
..也许connect
?