CREATE TABLE IF NOT NOT EXISTS在MySQLdb中工作吗?句法?

时间:2012-01-20 00:13:25

标签: python mysql-python

我创建了一个表“table2”并在运行代码时收到警告(表已经存在)。 我想只在它不存在的情况下创建表。 一些研究MySQL syntax website在MySQL中出现以下内容:CREATE TABLE IF NOT 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 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

CREATE TABLE命令的语法存在一些问题。

  1. 列定义后,您的表名为。它应放在它们之前,如下所示:

    CREATE TABLE IF NOT EXISTS table2 (<column definitions>);

  2. 其次,您使用2作为列名,但我不确定2是否是有效的列名。如果是,则应引用它以将其与普通整数区分开来。

  3. 您可以在MySQL documentation了解有关CREATE TABLE语法的更多信息。

答案 2 :(得分:2)

首先,使用the official reference而不是一些随机网站。文档几乎肯定会好很多。其次,你可能意味着更接近:

CREATE TABLE IF NOT EXISTS table2 (columnname INT);

答案 3 :(得分:1)

问题在于你的sql语法。 CREATE TABLE语句的正确语法将表名放在列之前。此外,2 INT不是有效的列定义。如果您的列的名称为“2”,则必须引用它,如

`2` INT

或者如果(更有可能)您想要一个包含两位小数的列,则将长度放在数据类型之后;该列仍必须具有名称:foo_column int(2)

总而言之,你想要

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

答案 4 :(得分:0)

import sqlite3
connexion = sqlite3.connect("bd-celebrites.sq3")
curseur = connexion.cursor()
curseur.execute("CREATE TABLE IF NOT EXISTS celebrites (nom TEXT, prenom TEXT, annee INTEGER)")