Помещение python входной переменной с командой обновления psycopg2 в указанный столбец c - PullRequest
0 голосов
/ 12 апреля 2020

Я новичок с Flask, Psycopg2 и Python, и у меня возникла эта небольшая проблема, я создал переменную input (), которая читает ответ пользователя, и я хочу, чтобы этот ответ был помещен в мои таблицы базы данных. Speci c столбец.

print('Are the eyes Open or Closed?: ')
estate1 = input()

def update_Eyes(self):
update_command = ("UPDATE Eyes SET cstate=%s Where id=1", (estate1,))
self.cursor.execute(update_command)
print("Eye table update successful ")

database_connection = DatabaseConnection()
database_connection.update_Eyes()

Если я попытаюсь добавить какие-либо значения самостоятельно, это работает просто отлично, но я не могу найти решение для добавления переменной.

Код ошибки выглядит так:

Traceback (most recent call last):
File "C:/Users/AJ/Desktop/Data Processing/Flask/first.py", line 136, in <module>
database_connection.update_Eyes()  # Updates Table Eyes
File "C:/Users/AJ/Desktop/Data Processing/Flask/first.py", line 98, in update_Eyes
self.cursor.execute(update_command)
TypeError: argument 1 must be a string or unicode object: got tuple instead

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Это идеальное решение

update_command = "UPDATE Eyes SET cstate = '{0}' Where id=1".format(estate1)

Мне просто нужно было добавить дополнительные кавычки вокруг '{0}', чтобы он читал строки, и он прекрасно работает. Огромное спасибо. :)

0 голосов
/ 12 апреля 2020

Когда вы компилируете свою команду в update_command, вы сохраняете ее как кортеж:

estate1 = 'test'
update_command = ("UPDATE Eyes SET cstate=%s Where id=1", (estate1,))
print(type(update_command))

<type 'tuple'>

Ошибка говорит о том, что она ожидает строку. Итак, измените update_command на:

update_command = "UPDATE Eyes SET cstate = '{0}' Where id=1".format(estate1)

После изменения вы увидите что-то вроде этого:

update_command = "UPDATE Eyes SET cstate = '{0}' Where id=1".format(estate1)
print(type(update_command))
<type 'str'>

Если вас беспокоит SQL Инъекция, Вы можете посетить это объяснение того, как правильно обрабатывать пользовательский ввод.

...