我在一个mysql数据库上有一个非常简单的存储过程,使用4个varchar参数并对某个表执行insert操作(我这样做的原因是为了更好地控制我给应用程序的权限)。当我直接从mysql调用这个过程时,如下所示:
CALL my_proc('aa', 'bb', 'cc', 'dd');
过程完成了它的工作,记录被插入到相关的表中。现在,当我通过python(使用mysql.connector)尝试时,代码似乎执行得很好(没有错误),但它没有执行预期的insert语句。我的代码是这样的:
from mysql.connector import MySQLConnection, Error, Warning
from helpers import get_config
def connect():
# helper procedure to fetch credentials from config.ini
db_config = get_config('mysql')
try:
print('Connecting...')
conn = MySQLConnection(**db_config)
if conn.is_connected():
print('connected')
return conn
else:
print('could not connect')
return None
except Error as e:
print(e)
def insert_record(conn, a, b, c, d):
try:
args = [a, b, c, d]
cursor = conn.cursor()
print('inserting {0} into database ''{1}'''.format(args, conn.database))
statement = "CALL my_proc('{0}', '{1}', '{2}', '{3}');".format(args)
print(statement)
cursor.execute(statement)
#cursor.callproc('my_proc', args)
except (Error, Warning) as e:
print e
if __name__ == '__main__':
conn = connect()
insert_listen_record(conn, 'aa', 'bb', 'cc', 'dd')
disconnect(conn)
输出与您期望的完全相同:
connecting...
connected
inserting ['aa', 'bb', 'cc', 'dd'] into the database
CALL my_proc('aa', 'bb', 'cc', 'dd');
connection closed
正如您在insert\u record过程中注解掉的代码中所看到的,我还尝试使用cursor.callproc而不是cursor.execute,但结果相同(缺少)。我不知道我做错了什么,因为我对这一切都是新手,我甚至不知道从哪里开始调试:存储过程工作正常,没有错误消息,在调试模式下逐步完成代码一切似乎都很好。。。
暂无答案!
目前还没有任何答案,快来回答吧!