import sqlite3, time, datetime, random, random
class DatabaseManager(object):
def __init__(self, db):
self.conn = sqlite3.connect(db)
self.conn.execute('pragma foreign_keys = on')
self.conn.commit()
self.c = self.conn.cursor()
def query(self, arg):
self.c.execute(arg)
self.conn.commit()
return self.c
def fetch(self):
self.c.fetchall()
self.conn.commit()
return self.c
def __del__(self):
self.conn.close()
dbmgr = DatabaseManager("connect.db")
while 1 > 0:
def quantity():
x = 1
file = open("john.txt", "r")
for line in file:
x = random.randint(100,10000000)
func = "INSERT INTO test (playerNAME) VALUES (?, ?)", line, x
dbmgr.query(func)
你可以忽略while 1> 0,这是我删除的代码的一部分,具体问我的问题。当我调用函数quantity()(在另一部分代码中,我也删除了这个问题),我得到一个错误,指出:操作参数必须是sql中的str/python
Traceback(最近调用最后一次): 文件“C:\ Users \ senarsky.CAL \ Documents \ 2016Sem2 \ Sqlite-connect.py“,第68行,第210行,在 数量() 文件”C:\ Documents \ 2016Sem2 \ Sqlite-connect.py“数量 dbmgr.query(func) 文件“C:\ Users \ senarsky.CAL \ Documents \ 2016Sem2 \ Sqlite-connect.py”,第14行,在查询中 self.c.execute(arg) ValueError:operation参数必须是str
我不知道如何使FUNC行的字符串,而无需使用不安全的SQL格式化......
'x'是一个整数。你的参数必须是str – njzk2
一个简单的卫生设施可以在'query'函数中添加'args = map(str,args)' – njzk2
@ njzk2我在哪里添加? – Dominico909