我们的类有一个任务,使用PyCharm在数据库中创建3个表,用于编程.py代码,并使用PHPMyAdmin来查看所述表。
我在第一次尝试时就通过Python编程在我的数据库中创建了三个表。然而,我们的编程教授要求我们在屏幕上记录我们的输出,所以我放弃了我的表,尝试重新运行我的.py文件并重新创建它们,这样我就可以在屏幕记录中显示我的.py代码可以工作,但是它们不能创建。我试过:
更改database
我的代码进行了一次尝试,但这会显示一个SQL错误,如果它恰好交叉一个,但是在上述所有情况下,SQL查询都证明是成功的。但是,当我检查PHPMyAdmin中的表以进行验证时,数据库将返回0个表。
这是我的康恩文件
import mysql.connector # allows to connect to db
from mysql.connector import Error # easily get error
try:
conx = mysql.connector.connect(host='127.0.0.1', database="_dbmidtermlab_maceren", user='root', password='')
if conx.is_connected():
db_info = conx.get_server_info() # get info about sql server
print("Connected to MYSQL Server Version: ", db_info)
cursor = conx.cursor()
cursor.execute("select database();")
db = cursor.fetchone()
print("You're connected to database: ", db)
except Error as e:
print("Error connecting to MYSQL", e)我的创建表文件
from conn import conx
from mysql.connector import Error
try:
createTable = """CREATE TABLE Order (OrderNum varchar(5) NOT NULL ,OrderDate date NULL,CustomerNum VARCHAR(3) NULL, PRIMARY KEY (OrderNum));
CREATE TABLE Parts (PartNum varchar(4) NOT NULL ,Description varchar(15) NULL,onHand decimal(4,0) NULL, Class varchar(2) NULL,Warehouse varchar(1) NULL, Price decimal(6,2) NULL, PRIMARY KEY (PartNum));
CREATE TABLE Customers (CustomerNum varchar(3) NOT NULL ,CustomerName varchar(35) NOT NULL,Street varchar(15) NULL, City varchar(15) NULL,State varchar(2) NULL, Zip varchar(5) NULL, Balance decimal(8,2) NULL, CreditLimit decimal(8,2) NULL, RepNum varchar(2) NULL, PRIMARY KEY (CustomerNum)); """
cursor = conx.cursor() #cursor allows to execute query (simiplay to mysqli_query())
result = cursor.execute(createTable, multi=True)
conx.commit()
#multi=True allows multiple queries in one variable
print("Tables created successfully")
except Error as error:
print("Failed to create table in MySQL: {}".format(error))
#finally:
# if conx.is_connected():
# cursor.close()
## print("MySQL connection is closed")根据我在谷歌上的搜索结果,很明显,放下桌子是个坏主意。它以某种方式影响了功能?我该怎么办?
发布于 2021-04-17 14:08:08
非常感谢“Barmar和IODEV”!
是什么解决了我的问题
的建议将创建表查询分隔开来
仍然不知道为什么我的多个查询第一次工作,然后被窃听,但现在,我的项目终于起作用了!谢谢!
发布于 2021-04-17 08:10:02
问题是,如果使用的名称是保留关键字,则MySQL需要对标识符进行回拨。在本例中,表名顺序是保留关键字(即sql Order by.)因此,您必须在Order ie周围使用backticks:
CREATE TABLE `Order` (OrderNum varchar(5) NOT NULL, OrderDate date NULL, CustomerNum VARCHAR(3) NULL, PRIMARY KEY (OrderNum)); 为了在将来更容易地跟踪类似的问题,我建议您单独执行SQL DDL语句,即每个cursor.execute分别执行一个create table ...语句。
https://stackoverflow.com/questions/67135019
复制相似问题