Psycopg2 errors syntaxerror

Psycopg2 errors syntaxerror

 

Psycopg2 выдает мне эту ошибку всякий раз, когда я пытаюсь обновить строку:

 

Traceback (most recent call last):

  File “p:/Projects/Freelance/Optometry_Inventory/code/tester.py”, line 39, in <module>

  new_user.updateUser(*(fname, lname, username, role, hashed_pwd, user_id))

  File “p:\Projects\Freelance\Optometry_Inventory\code\UserDC.py”, line 64, in updateUser

  cursor.execute(update_query, args)

psycopg2.errors.SyntaxError: syntax error at or near “lname”

LINE 1: UPDATE users SET fname= (‘a’), SET lname= (‘b’),

 

Когда я запускаю следующую функцию:

 

def updateUser(self, user_id):

  self.user_id = user_id

  update_query = “””UPDATE users SET fname= %s, SET lname= (%s),

  SET username= (%s), SET user_role= (%s), SET h_pwd= (%s), WHERE user_id= (%s)”””

  with pool() as cursor:

  cursor.execute(update_query, (self.fname, self.lname, self.user_name,

  self.user_role, self.user_pwd, self.user_id))

 

Я попытался просто обновить одно поле, и я все еще получаю ту же ошибку. Есть ли что-то еще, чего мне не хватает? Код ошибки не дает мне много информации.

 

Ответ

 

Проблема в том, что вы избыточно записываете SETдля каждого измененного столбца, одного SETболее чем достаточно 🙂

 

def updateUser(self, user_id):

  self.user_id = user_id

  update_query = “””

  UPDATE users

  SET fname= %s,

  lname= (%s),

  username= (%s),

  user_role= (%s),

  h_pwd= (%s)

  WHERE user_id= (%s)”””

  with pool() as cursor:

  cursor.execute(update_query, (self.fname, self.lname, self.user_name,

  self.user_role, self.user_pwd, self.user_id))

 

Если вы выполняете несколько обновлений одновременно, вы также можете взглянуть на execute_values . В UPDATEразделе execute_values ссылки есть пример.

 

При создании таблица возникла ошибка как как ее решить?

 

Всем привет хочу создать таблицу в postgresql через python но возникает ошибка( cur.execute(“””CREATE TABLE {}

psycopg2.errors.SyntaxError: ОШИБКА: ошибка синтаксиса (примерное положение: “688093622”)) вот код:

 

if user_id_v not in mas_user_id:

  mas_user_id.append(user_id_v)

 

  print(‘Новый пользователь БОТА: ‘, mas_user_id[-1])

  conn = psycopg2.connect(

  host=’localhost’,

  database=”,

  user=”,

  password=”,

  port=5432

  )

  cur = conn.cursor()

 

  # Создание таблицы

  # Создание таблицы

  cur.execute(f”’CREATE TABLE {user_id}

  (ADMISSION INT PRIMARY KEY NOT NULL,

  NAME TEXT NOT NULL,

  AGE INT NOT NULL,

  COURSE CHAR(50),

  DEPARTMENT CHAR(50));”’)

 

  print(“Table created successfully”)

  conn.commit()

  conn.close()

  conn.commit()

  conn.close()

 

Ответ

 

cur.execute(f”’CREATE TABLE “{user_id}”

  (ADMISSION INT PRIMARY KEY NOT NULL,

  NAME TEXT NOT NULL,

  AGE INT NOT NULL,

  COURSE CHAR(50),

  DEPARTMENT CHAR(50));”’)

 

Если уж используете что попало в именах таблиц, то используйте двойные кавычки

 

Наталья Петрова
Оцените автора
Новости города Салавата
Добавить комментарий

Adblock
detector