我在创建数据库和表时遇到了麻烦。需要在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")
答案 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 |
+-----------------+--------+