SQL запрос и python
При попытке заполнить подменю и сделать запрос вылетают следующие ошибки:
Traceback (most recent call last):
File "D:\Учёба\Python\MyDataBase\main.py", line 69, in <module>
filemenu.add_command(label=(results[0]),command=records_from_the_database(b[0]))
File "D:\Учёба\Python\MyDataBase\main.py", line 16, in records_from_the_database
cursor.execute("""SELECT * FROM (?)""",(name_table, ))
File "D:\Учёба\Python\MyDataBase\venv\lib\site-packages\pypyodbc.py", line 1617, in execute
check_success(self, ret)
File "D:\Учёба\Python\MyDataBase\venv\lib\site-packages\pypyodbc.py", line 1007, in check_success
ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
File "D:\Учёба\Python\MyDataBase\venv\lib\site-packages\pypyodbc.py", line 975, in ctrl_err
raise ProgrammingError(state,err_text)
pypyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Неправильный синтаксис около конструкции ")".')
# 192.168.56.1
#DESKTOP-NBL8O8E
import pypyodbc
import tkinter as tk
import tkinter.ttk as ttk
from table import Table
from tkinter import *
#получить данные из таблицы
def records_from_the_database(name_table=tuple()):
#получить данные ищ таблицы
print("SELECT * FROM (?)", (name_table,))
cursor.execute("""SELECT * FROM (?)""",(name_table, ))
results = cursor.fetchall()
for item in range(len(results)):
results[item]=str(results[item])
results[item]=" ".join(results[item].split())
results[item]=str(results[item])
new_arr = [i[1:-2].split(", ") for i in results]
for i in new_arr:
table = Table(root, ('aaa', 'bbb', 'ccc', 'ss'), rows=(new_arr))
table.pack(expand=tk.YES, fill=tk.BOTH)
def name_table():
# получить названия таблиц
mySQLQuery = ("SELECT TABLE_NAME FROM information_schema.tables")
cursor.execute(mySQLQuery)
results = cursor.fetchall()
arr = list(results)
arr.pop(len(arr) - 1)
return arr
if __name__ == '__main__':
#подключение БД
connection = pypyodbc.connect("Driver={SQL Server};"
"Server=DESKTOP-NBL8O8E;"
"Database=БТИ;")
#включаем курсоо
cursor = connection.cursor()
root = tk.Tk()
#верхнее меню
mainmenu = Menu(root)
root.config(menu=mainmenu)
filemenu = Menu(mainmenu, tearoff=0)
results = name_table()
print(results)
#убираю кавычки
b = []
for i in results:
b.append(i[0])
print(b)
#заполнение подменю
filemenu.add_command(label=(results[0]),command=records_from_the_database(b[0]))
#основное меню
mainmenu.add_cascade(label="Таблицы", menu=filemenu )
root.mainloop()
#закрыть бд
connection.close()