как вставить переменную в sqlite3 запрос python - PullRequest
0 голосов
/ 09 июня 2018

Уважаемые,

как я могу проверить, что pos_cli из базы данных равно переменной pos_id?сейчас с кодом ниже я получаю следующую ошибку

cur.execute("CREATE TABLE IF NOT EXISTS Magnit_Coor (pos_cli INTEGER PRIMARY KEY, lat INTEGER, long INTEGER);")
cur.execute('SELECT * FROM Magnit_pos')
data = cur.fetchall()
while True:
    for coo in data:
        full_add = coo[6:11]
        pos_id = coo[0]
        print (pos_id)
        yand_add = ", ".join(full_add)
        g = cur.execute('SELECT EXISTS (SELECT * FROM Magnit_Coor WHERE pos_cli = (?))',pos_id)
        g = cur.fetchone()[0]

ошибка ниже

10001
Traceback (most recent call last):
  File "geoco.py", line 17, in <module>
    g = cur.execute('SELECT EXISTS (SELECT * FROM Magnit_pos WHERE pos_cli = (?))',pos_id)
ValueError: parameters are of unsupported type

Исходный код для создания таблицы Magnit_pos и pos_cli, особенно ниже

cur.execute("DROP TABLE IF EXISTS Magnit_Pos;")
cur.execute(
    "CREATE TABLE Magnit_Pos (pos_cli INTEGER PRIMARY KEY, magnit_name TEXT, codesfa TEXT, codewsot TEXT, pos_sap TEXT, source_dc TEXT, zip TEXT, region TEXT, area TEXT, city TEXT, street TEXT, house TEXT, build TEXT);")

with open('magnit.csv') as csvfile:
    magnit = csv.reader(csvfile, delimiter=';')
    print(magnit)
    for row in magnit:
        print(row[0])
        # to_db = [unicode(row[0], "utf8"), unicode(row[1], "utf8")]
        cur.execute("INSERT INTO Magnit_Pos (pos_cli, magnit_name, codesfa, codewsot, pos_sap, source_dc, zip, region, area, city, street, house, build) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);", row)

1 Ответ

0 голосов
/ 09 июня 2018

Из документации питона sqlite3 (выделено мной):

Поставить?в качестве заполнителя везде, где вы хотите использовать значение, а затем укажите кортеж значений в качестве второго аргумента для метода execute () курсора.

Так что вы должны использовать:

    g = cur.execute('SELECT EXISTS (SELECT * FROM Magnit_Coor WHERE pos_cli = (?))',(pos_id,))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...