使用Python脚本创建MySQLdb数据库

时间:2012-01-19 19:43:27

标签: python mysql-python

我在创建数据库和表时遇到了麻烦。需要在Python脚本中创建数据库。

#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但是出错了。

创建数据库后,如何创建表? 谢谢, 汤姆

这是语法,这至少是第一次使用。第二次自然返回db已经存在。现在来弄清楚如何正确使用drop命令。

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

所以这是第一次通过时效果很好。第二次通过提供警告“db已存在”。怎么处理这个?以下是我认为它应该如何工作,但事实并非如此。或者它应该是if语句,寻找它是否已经存在,不填充?

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

3 个答案:

答案 0 :(得分:13)

使用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之类的图形工具来创建表,然后使用SHOW CREATE TABLE来发现创建它所需的SQL可能会有所帮助:< / p>

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。

答案 1 :(得分:7)

我认为解决方案要容易得多,使用“if not”:

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

答案 2 :(得分: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('test@gmail.com','test')")

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

# disconnect from server
db.close()

#OUTPUT

mysql> select * from test;
+-----------------+--------+
| email           | pwd    |
+-----------------+--------+
| test@gmail.com  | test   |
+-----------------+--------+