使用 python 连接器添加 MySQL Table 无法添加 table 而不会抛出 multi=True 错误
Add MySQL Table with python connector fails to add table without throwing error with multi=True
我 运行 遇到了一个非常奇怪的问题,我的下面的代码正在运行(我能够将 table 添加到数据库中)。通过 mysql workbench 删除测试 table 后,我能够添加数据库并且代码继续 运行 没有错误,但没有添加 table .我已将 SQL 缩小并尝试使用不同的数据库。我也重启了。我在这里做错了什么吗?非常感谢任何帮助。
import mysql.connector
import os
dirname = os.path.abspath('')
sql_filename = dirname + '\SQL_Creation\Test.sql'
class connectionsetup:
def __init__(self):
self.mydb = mysql.connector.connect(
host="localhost",
user="root",
password="")
try:
self.mycursor = self.mydb.cursor()
print('Conneciton Succesful')
self.mycursor.execute("CREATE DATABASE AP_Application_Db_test")
print('Database Created')
self.mycursor.execute('USE ap_application_db_test; Create TABLE test (SERIAL_NUMBER VARCHAR(255),VIOLATION_STATUS VARCHAR(255))', multi=True)
self.mydb.commit()
self.mydb.close()
except mysql.connector.Error as err:
print(err)
print("Error Code:", err.errno)
print("SQLSTATE", err.sqlstate)
print("Message", err.msg )
connectionsetup()
根据 docs、cursor.execute(..., multi=True)
[...] returns an iterator that enables processing the result of each statement
所以代码需要这样:
for _ in self.mycursor.execute(multiple_sql_statements, multi=True):
pass
我 运行 遇到了一个非常奇怪的问题,我的下面的代码正在运行(我能够将 table 添加到数据库中)。通过 mysql workbench 删除测试 table 后,我能够添加数据库并且代码继续 运行 没有错误,但没有添加 table .我已将 SQL 缩小并尝试使用不同的数据库。我也重启了。我在这里做错了什么吗?非常感谢任何帮助。
import mysql.connector
import os
dirname = os.path.abspath('')
sql_filename = dirname + '\SQL_Creation\Test.sql'
class connectionsetup:
def __init__(self):
self.mydb = mysql.connector.connect(
host="localhost",
user="root",
password="")
try:
self.mycursor = self.mydb.cursor()
print('Conneciton Succesful')
self.mycursor.execute("CREATE DATABASE AP_Application_Db_test")
print('Database Created')
self.mycursor.execute('USE ap_application_db_test; Create TABLE test (SERIAL_NUMBER VARCHAR(255),VIOLATION_STATUS VARCHAR(255))', multi=True)
self.mydb.commit()
self.mydb.close()
except mysql.connector.Error as err:
print(err)
print("Error Code:", err.errno)
print("SQLSTATE", err.sqlstate)
print("Message", err.msg )
connectionsetup()
根据 docs、cursor.execute(..., multi=True)
[...] returns an iterator that enables processing the result of each statement
所以代码需要这样:
for _ in self.mycursor.execute(multiple_sql_statements, multi=True):
pass