Ошибка нескольких переменных при передаче значений переменных в SQL в Python - PullRequest
0 голосов
/ 18 марта 2019

Мне удалось ввести себя в заблуждение при попытке передать значение переменной, назначенной в python tkinter, в базу данных SQL, которую я настроил, это код, который я использовал:

        new_db, c = SetUpDataBase()
        FirstName = entry1.get()
        LastName =entry2.get()
        DoB =entry3.get()
        Gender =entry4.get()
        MobileNo =entry5.get()
        HomeNo =entry6.get()
        Email =entry7.get()

, а затемоператор execute:

       c.executescript('''INSERT INTO Patients (Last_Name, First_Name, Date_of_Birth, Gender,
                        Home_Phone_Number, Mobile_Phone_Number, Email) VALUES(?,?,?,?,?,?,?) ''',(LastName,FirstName,DoB,Gender,HomeNo,MobileNo,Email))

это привело к сообщению об ошибке:

Home_Phone_Number, Mobile_Phone_Number, Email) VALUES(?,?,?,?,?,?,?) ''',(LastName,FirstName,DoB,Gender,HomeNo,MobileNo,Email))

TypeError: функция принимает ровно 1 аргумент (2 дано)

и идеи о том, какобойти это?

Спасибо

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Я с @Bryan Dakley, вот пример, вы не хотите ставить для подсчета количества полей каждый раз вообще? ;)

args = (LastName,FirstName,DoB,Gender,HomeNo,MobileNo,Email)

sql = "INSERT INTO Patients VALUES(%s)"%(",".join("?"*len(args)))

c.execute(sql, args)
0 голосов
/ 18 марта 2019

Если вы посмотрите на документацию для executescript, вы увидите, что требуется один аргумент: скрипт для запуска.Вы передаете ему два аргумента: скрипт для запуска и кортеж.executescript не принимает подстановку параметров, как это делают некоторые другие методы базы данных.

Решение состоит в том, чтобы использовать execute вместо executescript.

...