[英]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
命令的語法存在一些問題。
在列定義之后有表名。 它應該放在他們面前,像這樣:
CREATE TABLE IF NOT EXISTS table2 (<column definitions>);
其次,您使用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.