CREATE TABLE IF NOT EXISTS 在MySQLdb中有效吗?语法?

9 投票
5 回答
29897 浏览
提问于 2025-04-17 10:40

我创建了一个叫“table2”的表,但在运行我的代码时收到了警告(表已经存在)。我想要的效果是只有在这个表不存在的情况下才创建它。

经过一些研究,我在MySQL语法网站上发现,在MySQL中可以使用“CREATE TABLE IF NOT EXISTS”这个语句。

我的代码是:

cursor.execute('CREATE TABLE IF NOT EXISTS (2 INT)`table2`')

但是它给我提供了这个警告:

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(2 INT)`table2`' at line 1")

我的数据库版本是:5.1.54-1ubuntu4。谢谢,汤姆。

5 个回答

2

首先,建议你使用官方文档,而不是随便找个网站。官方的资料通常会更好。其次,你可能想要的内容更接近于:

CREATE TABLE IF NOT EXISTS table2 (columnname INT);
4

你的 CREATE TABLE 命令在语法上有几个问题。

  1. 首先,你把表的名字放在了列定义之后。其实应该把表名放在前面,像这样:

    CREATE TABLE IF NOT EXISTS table2 (<列定义>);

  2. 其次,你用 2 作为列名,但我不确定 2 是否是一个有效的列名。如果可以的话,应该用引号把它括起来,以便和普通的数字区分开。

你可以在 MySQL 文档 中了解更多关于 CREATE TABLE 语法的信息。

12

MySQL的语法是

CREATE TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options]
    [partition_options]

使用以下内容...

cursor.execute('CREATE TABLE IF NOT EXISTS `table2` (`something` int(2))')

结果是:

__main__:1: Warning: Table 'table2' already exists

撰写回答