N'CREATE TABLE if not EXISTS travail dans MySQLdb? La syntaxe?
J'ai créé une table "table2" et obtenir des avertissements (table existe déjà) quand je lance mon code.
Je veux créer la table si elle n'existe pas.
Certaines recherches Syntaxe de MySQL site webtourne le suivant dans MySQL : CREATE TABLE if not EXISTS
Mon code:
cursor.execute('CREATE TABLE IF NOT EXISTS (2 INT)`table2`')
donne cet avertissement:
_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")
J'ai version de base de données de la Base de données version : 5.1.54-1ubuntu4
Merci-Tom
Avez-vous vraiment voulu créer une colonne nommée "2"?
OriginalL'auteur Tom | 2012-01-20
Vous devez vous connecter pour publier un commentaire.
Il ya un couple de problèmes avec la syntaxe de votre
CREATE TABLE
commande.Vous avez le nom de la table après les définitions de colonnes. Il doit être placé avant, comme ceci:
CREATE TABLE IF NOT EXISTS table2 (<column definitions>);
Deuxièmement, vous l'utilisez
2
comme un nom de colonne, mais je ne suis pas sûr que2
est encore un nom de colonne valide. Si il l'est, il devrait être cité à la distinguer d'une plaine entier.Vous pouvez en lire plus sur le
CREATE TABLE
de la syntaxe à la Documentation de MySQL.OriginalL'auteur srgerg
syntaxe de mysql est
à l'aide de la suite...
résultat:
ne
import warnings
et puiswarnings.filterwarnings('ignore')
OriginalL'auteur user1136149
Tout d'abord, utilisez la référence officielle et pas sur un site au hasard. Les docs sont presque certain d'être beaucoup mieux. Deuxièmement, vous avez probablement dire quelque chose de plus:
OriginalL'auteur Kirk Strauser
Le problème est avec votre syntaxe sql. la syntaxe correcte pour une
CREATE TABLE
déclaration met le nom de la table avant les colonnes. En outre,2 INT
n'est pas une définition de la colonne. Si vous voulez dire pour la colonne d'avoir le nom de "2", il doit être cité commeOu si (plus probable) vous voulez une colonne de deux chiffres après la virgule, puis la longueur est placé après le type de données; la colonne doit toujours être donné un nom:
foo_column int(2)
Donc, tout à fait, vous voulez
OriginalL'auteur SingleNegationElimination