首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Python和PHPMyAdmin重新创建已删除的表到任何PHPMyAdmin数据库

无法使用Python和PHPMyAdmin重新创建已删除的表到任何PHPMyAdmin数据库
EN

Stack Overflow用户
提问于 2021-04-17 05:34:54
回答 2查看 79关注 0票数 0

我们的类有一个任务,使用PyCharm在数据库中创建3个表,用于编程.py代码,并使用PHPMyAdmin来查看所述表。

我在第一次尝试时就通过Python编程在我的数据库中创建了三个表。然而,我们的编程教授要求我们在屏幕上记录我们的输出,所以我放弃了我的表,尝试重新运行我的.py文件并重新创建它们,这样我就可以在屏幕记录中显示我的.py代码可以工作,但是它们不能创建。我试过:

更改database

  • Changing的名称-- tables

  • Creating的名称--测试数据库中的表,但是没有创建表。

我的代码进行了一次尝试,但这会显示一个SQL错误,如果它恰好交叉一个,但是在上述所有情况下,SQL查询都证明是成功的。但是,当我检查PHPMyAdmin中的表以进行验证时,数据库将返回0个表。

这是我的康恩文件

代码语言:javascript
复制
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)

我的创建表文件

代码语言:javascript
复制
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")

根据我在谷歌上的搜索结果,很明显,放下桌子是个坏主意。它以某种方式影响了功能?我该怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-17 14:08:08

非常感谢“Barmar和IODEV”!

是什么解决了我的问题

  1. 按照@Barmar
  2. 的建议,将添加到ORDER表中,按@IODEV

的建议将创建表查询分隔开来

仍然不知道为什么我的多个查询第一次工作,然后被窃听,但现在,我的项目终于起作用了!谢谢!

票数 1
EN

Stack Overflow用户

发布于 2021-04-17 08:10:02

问题是,如果使用的名称是保留关键字,则MySQL需要对标识符进行回拨。在本例中,表名顺序是保留关键字(即sql Order by.)因此,您必须在Order ie周围使用backticks:

代码语言:javascript
复制
CREATE TABLE `Order` (OrderNum varchar(5) NOT NULL, OrderDate date NULL, CustomerNum VARCHAR(3) NULL, PRIMARY KEY (OrderNum)); 

为了在将来更容易地跟踪类似的问题,我建议您单独执行SQL DDL语句,即每个cursor.execute分别执行一个create table ...语句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67135019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档