Я создаю Mysql Wrapper для Python, главным образом, чтобы изучить все тонкости языка и т. Д. Хотя я сталкиваюсь с проблемой, которую не вижу, чтобы найти решение.
Когда я запускаю скрипт, не выдается никаких исключений, хотя моя БД не обновляется.Я играл с курсорами БД, как их закрытие, создание нового в функции и т. Д. Но результат остается прежним.
aka: cursor.rowcount -1
Подключение к БД:
class magicDB:
myDB = None
DB_Cursor = None
def __init__(self,host, user, passwd, DB=None):
global myDB
self.host = host
self.user = user
self.DB = DB
if self.DB is None:
myDB = mysql.connector.connect(
host= host,
user= user,
passwd= passwd)
#DB_Cursor = myDB.cursor()
else:
myDB = mysql.connector.connect(
host= host,
user= user,
passwd= passwd,
database=DB)
#DB_Cursor = myDB.cursor()
def insert(self,table_name, params):
fields = ''
values = ''
placeholders = ''
query = '"INSERT INTO {} '. format(table_name)
for key in params:
fields = fields + str(key) + ', '
values = values + str(params[key]) + ', '
placeholders = placeholders + str('%s, ')
fields = fields[:-2]
values = values[:-2]
placeholders = placeholders[:-2]
query = query + '(' + fields + ')' + ' VALUES ' + '(' + placeholders + ')"'
print(query)
try:
Cursor = myDB.cursor()
Cursor.execute(operation=query, params=values, multi=True)
myDB.commit()
print(Cursor.rowcount, ' Record inserted')
except mysql.connector.Error as error:
print (error)
finally:
Cursor.close()
И это основной модуль, который вызывает функции:
from db_magic import magicDB
conn = magicDB(host='localhost', user='***', passwd='****', DB='testing')
print(conn)
# print(conn.DB_create('testing2'))
conn.insert(table_name= 'users', params={
'user_name': 'John Doe',
'email' : 'test@123.com',
'password': 'test'
} )
print(conn.Close_conn())
Я пытаюсь понять, что я делаю здесь неправильно, потому что не выдается никаких исключений.
РЕШЕНИЕ:
Изменены значения в списке вместо строки.
def insert(self,table_name, params):
fields = ''
values = [] # changed to List instead of String
placeholders = ''
query = 'INSERT INTO {} '. format(table_name)
for key in params:
fields = fields + str(key) + ', '
values.append(params[key])
placeholders = placeholders + str('%s, ')
fields = fields[:-2]
placeholders = placeholders[:-2]
query = query + '(' + fields + ')' + ' VALUES ' + '(' + placeholders + ')'
print(query)
print(values)
try:
Cursor = myDB.cursor()
Cursor.execute(operation=query, params=values, multi=False)
myDB.commit()
print(Cursor.rowcount, ' Record inserted')
except mysql.connector.Error as error:
print(error)
except:
print ('Some errors')
finally:
Cursor.close()