【发布时间】:2016-02-24 00:33:09
【问题描述】:
我在使用 Python 中的 MySQL 更新语句时遇到困难我创建了一个用于执行查询的类,我的所有其他查询都可以工作,但更新我可以用一双新的眼睛。
database_handler.sql_post_query_with_args_performed_successfully("UPDATE members SET email ='test@test.ie' WHERE id= '%s'",id)
函数 sql_post_query_with_args_performed_successfully 在执行查询时返回 true。就目前而言,此代码返回 true 但未更新表代码的字段,如下所示: def sql_post_query_with_args_performed_successfully(self, query, args): 使用 UseDatabase(self.MYSQL_DETAILS) 作为游标: 尝试: cursor.execute(查询,参数) 返回真 除了 mysql.connector.errors.IntegrityError: 返回错误
这个函数使用另一个类“UseDatabase”来处理查询的连接和执行,这里是代码:
import mysql.connector
class UseDatabase:
def __init__(self, configuration:dict):
self.config = configuration
def __enter__(self) -> 'cursor':
"""Connect to database and create a DB cursor.
Return the database cursor to the context manager.
"""
self.conn = mysql.connector.connect(**self.config)
self.cursor = self.conn.cursor()
return self.cursor
def __exit__(self, exc_type, exc_value, exc_traceback):
self.cursor.close()
self.conn.commit()
self.conn.close()
【问题讨论】:
-
UPDATE members SET email ='test@test.ie' WHERE id= %s尝试删除' -
可能是提交或自动提交
-
当我删除 ' 时出现以下错误:mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的“%s”附近使用的正确语法
-
@Drew 这是函数 def sql_post_query_with_args_performed_successfully(self, query, args) 的代码:使用 UseDatabase(self.MYSQL_DETAILS) 作为游标:try: cursor.execute(query, args) return True except mysql.connector.errors.IntegrityError:返回 False
标签: python mysql python-3.x