В Python, как определить функцию, которая вставляет аргументы функции в таблицу в базе данных? - PullRequest
0 голосов
/ 24 октября 2018

Я хочу определить функцию (с именем "kayitEkle"), которая вставляет аргументы функции в таблицу (с именем "biTablo") в базе данных:

import sqlite3

connect = sqlite3.connect("obs.db")
cursor = connect.cursor()

def tabloOlustur():
    cursor.execute("CREATE TABLE IF NOT EXISTS biTablo(ad TEXT, soyad TEXT, numara TEXT, puan REAL)")
    connect.commit()


tabloOlustur()

def kayitEkle(ad, soyad, numara, puan):
    cursor.execute("INSERT INTO biTablo(ad, soyad, numara, puan) VALUES(? ? ? ?)",(ad,soyad,numara,puan))
    connect.commit()

kayitEkle('ahmet', 'yılmaz', '08067', 50)

, но я получаю это сообщение:

Traceback (most recent call last):
 File "C:/Users/pc/PycharmProjects/ikinciBahar/ogrenmeDatabase.py", line 234, in <module>
   kayitEkle('ahmet', 'yılmaz', '08067', 50)
 File "C:/Users/pc/PycharmProjects/ikinciBahar/ogrenmeDatabase.py", line 231, in kayitEkle
   cursor.execute("INSERT INTO biTablo(ad, soyad, numara, puan) VALUES(? ? ? ?)",(ad,soyad,numara,puan))
sqlite3.OperationalError: near "?": syntax error

что не так?что мне делать?

Ответы [ 4 ]

0 голосов
/ 24 октября 2018

Если я не ошибаюсь, это должно сработать:

cursor.execute("INSERT INTO biTablo(ad, soyad, numara, puan) VALUES(%s, %s, %s, %s)", (ad,soyad,numara,puan))
0 голосов
/ 24 октября 2018

Вам нужно правильно составить строку.Adumming объявления, soyad, numara - это строки, а puan - это число:

cursor.execute (INSERT INTO biTablo VALUES (\ "% s \", \ "% s \", \ "% s\ ",% f);"% (ad, soyad, numara, puan))

0 голосов
/ 24 октября 2018

Вы, вероятно, должны использовать python .format и изменить свою строку с

   cursor.execute("INSERT INTO biTablo(ad, soyad, numara, puan) VALUES(? ? ? ?)",(ad,soyad,numara,puan))

на

   cursor.execute("INSERT INTO biTablo(ad, soyad, numara, puan) VALUES({},{},{},{})".format(ad,soyad,numara,puan))
0 голосов
/ 24 октября 2018

В вашем cursor.execute использовании VALUES(%s, %s, %s, %s)

...