#python #mysql #database #phpmyadmin #pymysql
#python #mysql #База данных #phpmyadmin #pymysql
Вопрос:
Я пытаюсь извлечь значение из существующей базы данных, а также вставить значение в базу данных, если оно не существует.
Этот код отлично работает для извлечения значения из значения, но я не могу вставить значение в базу данных.
import pymysql
connection = pymysql.connect(
host='localhost',
user='root',
password='',
db='chatbotqad',
)
user_input=input('Enter :')
print(user_input)
try:
with connection.cursor() as cursor:
sql = "SELECT * FROM `qans` WHERE `Questions` = ('%s') " % user_input
try:
cursor.execute(sql)
result = cursor.fetchall()
if not cursor.fetchone():
sqli = "INSERT INTO `qans` VALUES (%s)" % user_input
cursor.execute(sqli)
print("Quett Answer")
print("-------------------------")
for row in result:
print(str(row[0]) "tt" row[1])
except:
print("Oops! Something wrong")
connection.commit()
finally:
connection.close()**strong text**
Комментарии:
1.Этот код подвержен условиям гонки, в идеале вы также должны добавить уникальный ключ в свою таблицу, а также вы должны сделать это в одном запросе более или менее похожим
INSERT INTO <table> <columns> SELECT <columns> FROM <table> WHERE <condition>
.. Смотрите руководство MySQL по использованиюINSERT INTO .. SELECT ...
синтаксиса2. Можете ли вы увидеть, выполняется ли оператор insert — например, поместите
print()
оператор передcursor.execute(sqli)
Ответ №1:
Я наконец нашел это решение.
import pymysql
connection = pymysql.connect(
host='localhost',
user='root',
password='',
db='chatbotqad',
)
user_input=input('Enter input:')
try:
with connection.cursor() as cursor:
sql = "SELECT * FROM `qans` WHERE `Questions` = ('%s') " % user_input
try:
if (cursor.execute(sql)==0):
result = cursor.fetchall()
Ans_input=input('Please enter Answer:-')
sql = "INSERT INTO `qans` (Questions, Answers) VALUES (%s,%s)"
try:
cursor.execute(sql, (user_input,Ans_input))
print("Task added successfully")
except:
print("Oops! Something wrong")
else:
cursor.execute(sql)
result = cursor.fetchall()
print("Quett Answer")
print("-------------------------")
for row in result:
print(str(row[0]) "tt" row[1])
except:
print("Oops! Something wrong")
connection.commit()
finally:
connection.close()