簡體   English   中英

CREATE TABLE IF NOT EXISTS 在 MySQLdb 中是否有效? 句法?

[英]Does CREATE TABLE IF NOT EXISTS work in MySQLdb? Syntax?

我創建了一個表“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 感謝湯姆

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

CREATE TABLE命令的語法存在一些問題。

  1. 在列定義之后有表名。 它應該放在他們面前,像這樣:

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

  2. 其次,您使用2作為列名,但我不確定2甚至是有效的列名。 如果是,則應該引用它以將其與普通整數區分開來。

您可以在MySQL 文檔中閱讀有關CREATE TABLE語法的更多信息。

首先,使用官方參考而不是一些隨機站點。 這些文檔幾乎肯定會好得多。 其次,您的意思可能更接近於:

CREATE TABLE IF NOT EXISTS table2 (columnname INT);

問題在於您的 sql 語法。 CREATE TABLE語句的正確語法將表名放在列之前。 此外, 2 INT不是有效的列定義。 如果您的意思是該列的名稱為“2”,則必須像這樣引用

`2` INT

或者,如果(更有可能)您想要一個包含兩位十進制數字的列,則將長度放在數據類型之后; 該列仍必須命名: foo_column int(2)

所以總的來說,你想要

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM