2012-01-19 11 views
13

データベースとテーブルの作成に問題があります。データベースは、Pythonスクリプト内で作成する必要があります。Pythonスクリプトを使ってMySQLdbデータベースを作成する

#connect method has 4 parameters: 
#localhost (where mysql db is located), 
#database user name, 
#account password, 
#database name  
db1 = MS.connect(host="localhost",user="root",passwd="****",db="test") 

戻り

_mysql_exceptions.OperationalError: (1049, "Unknown database 'test'") 

だから、はっきり、DB1は、最初に作成する必要がありますが、どのように?私はconnect()ステートメントの前にCREATEを試しましたが、エラーが発生しました。

データベースを作成したら、テーブルを作成するにはどうすればよいですか? ありがとう、 Tom

これは構文ですが、これは少なくとも最初に動作します。 2回目には、dbがすでに存在することが自然に戻されます。今すぐdropコマンドを適切に使用する方法を理解する。

db = MS.connect(host="localhost",user="root",passwd="****") 
    db1 = db.cursor() 
    db1.execute('CREATE DATABASE test1') 

これは最初から素晴らしいです。 2回目に「db already exists」という警告が表示されます。これに対処する方法は?以下は、私がそれがうまくいくと思う方法ですが、そうではありません。または、それがすでに存在するかどうかを調べるif文でなければなりませんか?データベースを作成する

import warnings 
warnings.filterwarnings("ignore", "test1") 
+1

失礼なことしないが、あなたはそれをグーグルで試してみましたか?接続からdb = "test"を削除し、http://dev.mysql.com/doc/refman/5.0/ja/sql-syntax.htmlまたはhttp://www.w3schools.com/sql/defaultを参照してください。 .asp –

+0

はい、たくさんのグーグル(RTFMは失礼ではありませんが、見つけられたかどうかは尋ねません)。そして、私は "テスト"をドロップするとエラーはありません。問題は、SQLではなくPythonを使ってdbをどのように作成するのかということです。 – Tom

+0

ここに構文がありますが、これは少なくとも最初に動作します。 2回目には、dbがすでに存在することが自然に戻されます。今すぐdropコマンドを適切に使用する方法を理解する。 db1.execute( 'CREATE DATABASE test1') – Tom

答えて

12

使用CREATE DATABASE

db1 = MS.connect(host="localhost",user="root",passwd="****") 
cursor = db1.cursor() 
sql = 'CREATE DATABASE mydata' 
cursor.execute(sql) 

使用CREATE TABLEテーブルを作成する:

sql = '''CREATE TABLE foo (
     bar VARCHAR(50) DEFAULT NULL 
     ) ENGINE=MyISAM DEFAULT CHARSET=latin1 
     ''' 
cursor.execute(sql) 

テーブルを作成する際に多くのオプションがありますが。あなたが正しいSQLがわからない場合は、テーブルを作成するphpmyadminのようなグラフィカルなツールを使用することを助け、その後、SQLはそれを作成するために必要なものを発見するためにSHOW CREATE TABLEを使用することがあります。

mysql> show create table foo \G 
*************************** 1. row *************************** 
     Table: foo 
Create Table: CREATE TABLE `foo` (
    `bar` varchar(50) DEFAULT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 
1 row in set (0.00 sec) 

phpMyAdminのをすることができますあらゆる種類の操作を実行するために使用されたSQLも示します。これは、いくつかの基本的なSQLを学ぶのに便利な方法です。

これを実験したら、PythonでSQLを書くことができます。

+0

私はphpmyadminが何が起こっているのかを知るのが好きです。ありがとうございました! – Tom

7

私は、解決策がずっと簡単だと思う「そうでない場合は」使用します。

sql = "CREATE DATABASE IF NOT EXISTS test1" 
db1.execute(sql) 
6
import MySQLdb 


# Open database connection (If database is not created don't give dbname) 
db = MySQLdb.connect("localhost","yourusername","yourpassword","yourdbname") 

# prepare a cursor object using cursor() method 
cursor = db.cursor() 

# For creating create db 
# Below line is hide your warning 
cursor.execute("SET sql_notes = 0; ") 
# create db here.... 
cursor.execute("create database IF NOT EXISTS yourdbname") 



# create table 
cursor.execute("SET sql_notes = 0; ") 
cursor.execute("create table IF NOT EXISTS test (email varchar(70),pwd varchar(20));") 
cursor.execute("SET sql_notes = 1; ") 

#insert data 
cursor.execute("insert into test (email,pwd) values('[email protected]','test')") 

# Commit your changes in the database 
db.commit() 

# disconnect from server 
db.close() 

#OUTPUT 

mysql> select * from test; 
+-----------------+--------+ 
| email   | pwd | 
+-----------------+--------+ 
| [email protected] | test | 
+-----------------+--------+ 
関連する問題