This commit is contained in:
ada-dmitry
2024-05-05 23:30:58 +03:00
parent 62b1bf2c55
commit eb0bdf5049
5 changed files with 25 additions and 12 deletions
Binary file not shown.
+13 -5
View File
@@ -2,6 +2,11 @@
from dbconnection import * from dbconnection import *
'''
FIXME:
1) Не работает санация для insert_one!
'''
class DbTable: class DbTable:
dbconn = None dbconn = None
@@ -47,18 +52,21 @@ class DbTable:
return return
def insert_one(self, vals): def insert_one(self, vals):
for i in range(0, len(vals)): for i in range(len(vals)):
if type(vals[i]) == str: if type(vals[i]) == str:
vals[i] = "'" + vals[i] + "'" vals[i] = "'" + vals[i] + "'"
else: else:
vals[i] = str(vals[i]) vals[i] = str(vals[i])
sql = "INSERT INTO " + self.table_name() + "(" # sql = "INSERT INTO " + self.table_name() + "("
sql += ", ".join(self.column_names_without_id()) + ") VALUES(" # sql += ", ".join(self.column_names_without_id()) + ") VALUES("
sql += ", ".join(vals) + ")" # sql += ", ".join(vals) + ")"
query = "INSERT INTO " + self.table_name() + "(" + ", ".join(self.column_names_without_id()) + ") VALUES(%s)"
print(query)
cur = self.dbconn.conn.cursor() cur = self.dbconn.conn.cursor()
values = ", ".join(vals)
# cur.execute(sql) # cur.execute(sql)
try: try:
cur.execute(sql) cur.execute(query, (values,))
self.dbconn.conn.commit() self.dbconn.conn.commit()
except psycopg2.errors.UniqueViolation: except psycopg2.errors.UniqueViolation:
self.dbconn.conn.rollback() self.dbconn.conn.rollback()
+2
View File
@@ -15,11 +15,13 @@ TODO:
3) Устранить SQLi с помощью санации атрибутов - Не выполнено 3) Устранить SQLi с помощью санации атрибутов - Не выполнено
FIXME: FIXME:
1) Не работает санация для insert_one!
''' '''
class Main: class Main:
config = ProjectConfig() config = ProjectConfig()
connection = DbConnection(config) connection = DbConnection(config)
+10 -7
View File
@@ -14,18 +14,21 @@ class CathTable(DbTable):
return ['CONSTRAINT "Name" UNIQUE (cath_name)'] return ['CONSTRAINT "Name" UNIQUE (cath_name)']
def delete(self, val): def delete(self, val):
sql = "DELETE FROM " + self.table_name() # sql = "DELETE FROM " + self.table_name()
sql += " WHERE cath_name" # sql += " WHERE cath_name"
sql += "=" + "'" + "".join(val) + "';" # sql += "=" + "'" + "".join(val) + "';"
param_sql = "DELETE FROM cath WHERE cath_name = %s;"
cur = self.dbconn.conn.cursor() cur = self.dbconn.conn.cursor()
cur.execute(sql) value = "".join(val)
cur.execute(param_sql, (value,))
self.dbconn.conn.commit() self.dbconn.conn.commit()
def find_by_name(self, name): def find_by_name(self, name):
cur = self.dbconn.conn.cursor() cur = self.dbconn.conn.cursor()
sql_sel = "SELECT id FROM " + self.table_name() param_query = "SELECT id FROM cath WHERE cath_name = %s;"
sql_sel += " WHERE cath_name = " + "'" + name + "'" + ";" # sql_sel = "SELECT id FROM " + self.table_name()
cur.execute(sql_sel) # sql_sel += " WHERE cath_name = " + "'" + name + "'" + ";"
cur.execute(param_query, (name,))
ret = cur.fetchone() ret = cur.fetchone()
return list(ret)[0] return list(ret)[0]
# sql = "SELECT * FROM " + self.table_name() # sql = "SELECT * FROM " + self.table_name()