как получить пользовательский ввод из qdateEdit и выбрать его из базы данных в postgres

#python #postgresql #pyqt5 #psycopg2

#python #postgresql #pyqt5 #psycopg2

Вопрос:

я хочу знать, как получить пользовательский ввод в QDateEdit и выбрать его в таблице в postgres? вот мой код

  def date(self):

        try:
            date = self.dateEdit.date()
            print(date)
            conn = psycopg2.connect(dbname="sample", user="postgres", password="admin", host="localhost", port="5432")
            cur = conn.cursor()
            cur.execute("SELECT * FROM data WHERE stdate = '%s'",date)
            result = cur.fetchall()
            self.tableWidget.setRowCount(0)
            for row_number, row_data in enumerate(result):
                self.tableWidget.insertRow(row_number)
                for column_number, data in enumerate(row_data):
                    self.tableWidget.setItem(row_number, column_number, QTableWidgetItem(str(data)))
        except Exception as e:
            print("Error")
 

у меня возникли проблемы с этой частью

 cur.execute("SELECT * FROM data WHERE stdate = '%s'",date)
 

как мне получить дату из QDateEdit и выбрать ее в таблице в postgres?

и я только хочу выбрать строки, в которых стандартная дата равна дате, которую пользователь вводит в QDateEdit, и отобразить ее в QTableView, когда я нажимаю кнопку выбора данных введите описание изображения здесь

Ответ №1:

Вы должны:

  • Используйте datetime.time() не QDate .
  • Заполнитель без кавычек.
 dt = self.dateEdit.date().toPyDate()
cur.execute("SELECT * FROM data WHERE stdate = %s", (dt,))
 

Комментарии:

1. что вы подразумеваете под datetime.time()? это виджет?

2. я попробовал код, но он не запустил sql-запрос, в таблице не отображается значение, нужно ли мне что-то импортировать, чтобы использовать datetime?

3. он напечатал «Ошибка», блок try не выполнялся, поэтому он перешел к except