我有一个带有唯一键的数据库表。如果我想插入一些记录,有两种可能的方法。首先,唯一的项目还不存在,没关系,只需返回新的id。其次,该项目已经存在,我需要获取此唯一记录的 id。
问题是,无论我尝试什么,我总是会遇到一些异常。
下面是代码示例:
def __init__(self, host, user, password, database):
# set basic attributes
super().__init__(host, user, password, database)
#open connection
try:
self.__cnx = mysql.connector.connect(
database=database, user=user, password=password, host = host)
#self.__cursor = self.__cnx.cursor()
except ...
def insert_domain(self, domain):
insertq = "INSERT INTO `sp_domains` (`domain`) VALUES ('{0}')".format(domain)
cursor = self.__cnx.cursor()
try:
cursor.execute(insertq)
print("unique")
except (mysql.connector.errors.IntegrityError) as err:
self.__cnx.commit()
print("duplicate")
s = "SELECT `domain_id` FROM `sp_domains` WHERE `domain` = '{0}';".format(domain)
try:
id = cursor.execute(s).fetchone()[0]
except AttributeError as err:
print("Unable to execute the query:", err, file=sys.stderr)
except mysql.connector.errors.ProgrammingError as err:
print("Query syntax error:", err, file=sys.stderr)
else:
self.__cnx.commit()
cursor.close()
但无论我尝试什么,在第一条重复记录上,我都会得到“MySQL 连接不可用”、“未读结果”。该代码只是演示它的示例。
这是我第一个使用 Connector/python 的程序,所以我不知道所有的规则,比如获取结果、提交查询等等。
有人可以帮我解决这个问题吗?或者是否有任何有效的方法来完成这项任务(因为这对我来说似乎不是最好的解决方案)。谢谢你的任何建议。