sql/python中的操作参数必须为str
您可以忽略while1>0,这是我删除的专门询问我的问题的代码的一部分。当我调用函数quantity()时(在代码的另一部分中,为了提问,我也删除了它),我得到一个错误,它指出: 回溯(最近一次呼叫最后一次): 文件“C:\Users\senarsky.CAL\Documents\2016Sem2\Sqlite connect.py”,第210行,在 数量() 文件“C:\Users\senarsky.CAL\Documents\2016Sem2\Sqlite connect.py”,第68行,数量 dbmgr.query(func) 查询中第14行的文件“C:\Users\senarsky.CAL\Documents\2016Sem2\Sqlite connect.py” self.c.execute(arg) ValueError:操作参数必须是strsql/python中的操作参数必须为str,python,sql,database,sqlite,Python,Sql,Database,Sqlite,您可以忽略while1>0,这是我删除的专门询问我的问题的代码的一部分。当我调用函数quantity()时(在代码的另一部分中,为了提问,我也删除了它),我得到一个错误,它指出: 回溯(最近一次呼叫最后一次): 文件“C:\Users\senarsky.CAL\Documents\2016Sem2\Sqlite connect.py”,第210行,在 数量() 文件“C:\Users\senarsky.CAL\Documents\2016Sem2\Sqlite connect.py”,第68行,
我不知道如何在不使用不安全的sql格式的情况下使func行成为字符串…将查询参数包含在元组中:
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)
修改query
方法以接受查询和参数:
query = "INSERT INTO test (playerNAME) VALUES (?, ?)"
parameters = (line, x)
然后呼叫:
def query(self, query, params=None):
self.c.execute(query, params)
self.conn.commit()
return self.c
x
是一个整数。您的参数必须是stra,可以添加args=map(str,args)
在您的查询中
function@njzk2我应该在哪里添加它?那么什么是params=None和params变量?@Dominico909这是传递查询参数的地方-占位符的值。啊,谢谢。我对params=None的用途更感到困惑。
dbmgr.query(query, parameters)