Python 在MySQLdb中创建不存在的表是否有效?语法?

Python 在MySQLdb中创建不存在的表是否有效?语法?,python,mysql-python,Python,Mysql Python,我已经创建了一个表“table2”,并在运行代码时收到警告(表已经存在)。 我只想在表不存在时创建它。 一些研究在MySQL中发现了以下内容:如果不存在,则创建表 我的代码: cursor.execute('CREATE TABLE IF NOT EXISTS (2 INT)`table2`') 提供以下警告: _mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the

我已经创建了一个表“table2”,并在运行代码时收到警告(表已经存在)。 我只想在表不存在时创建它。 一些研究在MySQL中发现了以下内容:如果不存在,则创建表

我的代码:

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
谢谢Tom,

您的
创建表
命令的语法有几个问题

  • 表名位于列定义之后。它应该放在他们面前,如下所示:

    创建表(如果不存在表2())

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

  • 您可以在。

    上阅读有关
    创建表
    语法的更多信息。首先,使用而不是一些随机站点。这些文档几乎肯定会好得多。其次,你的意思可能更接近:

    CREATE TABLE IF NOT EXISTS table2 (columnname INT);
    

    问题在于您的sql语法。
    createtable
    语句的正确语法将表名放在列之前。此外,
    2int
    不是有效的列定义。如果您的意思是要使列的名称为“2”,则必须将其引用为

    `2` INT
    
    或者,如果(更可能)您想要一列两位小数,那么长度将放在数据类型之后;该列仍然必须有一个名称:
    foo\u column int(2)

    总之,你想要

    cursor.execute('''
        CREATE TABLE IF NOT EXISTS table2 (
            foo_column INT(2))
        ''')
    
    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
    

    你真的想创建一个名为“2”的专栏吗?谢谢你的帮助!如何消除警告?先导入警告,然后导入警告。过滤警告(“忽略”)
    一些代码解释答案或提供一些上下文将不胜感激。
    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)")