因此,我正在使用Python做基本的MySQL教程,我首先使用以下代码创建了一个简单的数据库。

import MySQLdb as mdb

con = mdb.connect('localhost', 'testuser', 'test623', 'testdb')

with con:
    cur = con.cursor()
    cur.execute("DROP TABLE IF EXISTS Writers")
    cur.execute("CREATE TABLE Writers (Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(25))")
    cur.execute("INSERT INTO Writers(Name) VALUES ('Jack London')")
    cur.execute("INSERT INTO Writers(Name) VALUES ('Honore de Balzac')")
    cur.execute("INSERT INTO Writers(Name) VALUES ('Lion Feuchtwanger')")
    cur.execute("INSERT INTO Writers(Name) VALUES ('Emile Zola')")
    cur.execute("INSERT INTO Writers(Name) VALUES ('Truman Capote')")


执行得很好。然后,我运行以下MySQL命令。

USE Writers;
SELECT * FROM Writers;


最后一行引发错误


  错误1146(42S02):表'Writers.Writers'不存在


有人知道是什么原因引起的,还是为什么它首先尝试访问称为Writers.Writers的东西?

最佳答案

您连接到MySQL,并将默认数据库设置为testdb。这样便是Writers表的创建位置。然后,您切换到没有此类表的Writers。例如

con = mdb.connect('localhost', 'testuser', 'test623', 'testdb')
                                                       ^^^^^^^--- default DB


在做

SELECT * FROM testdb.Writers


将工作,将

use testdb;
SELECT * FROM Writers

10-08 07:08