Я создаю класс базы данных для своего приложения, так как таблицы базы данных мне понадобятся в разных случаях. Я использую sqlite3, и мне нужно, чтобы мой код был как можно более универсальным c, но когда я использовал «% s» и / или «?» для имени таблицы и заголовков столбцов я получил вышеупомянутую ошибку.
Вот мой код:
import sqlite3
conn = sqlite3.connect("cows.db")
c = conn.cursor()
class databases:
global c
def __init__(self, table_name):
self.table_name = table_name
def create_table(self, *args, **kwargs):
c.execute('CREATE TABLE IF NOT EXISTS %s(%s)', (self.table_name, args))
c.execute("INSERT INTO %s VALUES (%s)", (self.table_name, kwargs))
conn.commit()
def delete_record(self, *args):
c.execute(''' DELETE FROM ? WHERE ? = ?''', (self.table_name, args))
conn.commit()
cows = databases('cow')
cows.create_table('cow_id REAL', 'lactation_phase TEXT', 'milk_production REAL', 'weight REAL')
Вот сообщение об ошибке:
C:\Users\farid\PycharmProjects\cownutritionmanagmentsystem\venv\Scripts\python.exe C:/Users/farid/PycharmProjects/cownutritionmanagmentsystem/database.py
Traceback (most recent call last):
File "C:/Users/farid/PycharmProjects/cownutritionmanagmentsystem/database.py", line 24, in <module>
cows.create_table('cow_id REAL', 'lactation_phase TEXT', 'milk_production REAL', 'weight REAL')
File "C:/Users/farid/PycharmProjects/cownutritionmanagmentsystem/database.py", line 14, in create_table
c.execute('CREATE TABLE IF NOT EXISTS %s(%s)', (self.table_name, args))
sqlite3.OperationalError: near "%": syntax error