使用 Python 脚本创建 MySQLdb 数据库
Posted
技术标签:
【中文标题】使用 Python 脚本创建 MySQLdb 数据库【英文标题】:Create MySQLdb database using Python script 【发布时间】:2012-02-14 11:28:59 【问题描述】:我在创建数据库和表时遇到了麻烦。需要在 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,但出现错误。
创建数据库后,如何创建表? 谢谢, 汤姆
这是语法,至少第一次有效。第二次自然返回数据库已经存在。现在来弄清楚如何正确使用 drop 命令。
db = MS.connect(host="localhost",user="root",passwd="****")
db1 = db.cursor()
db1.execute('CREATE DATABASE test1')
所以这在第一次通过时效果很好。第二次通过提供警告“数据库已存在”。如何处理?以下是我认为它应该如何工作,但没有。或者它应该是一个 if 语句,寻找它是否已经存在,不填充?
import warnings
warnings.filterwarnings("ignore", "test1")
【问题讨论】:
不要粗鲁,但你试过用谷歌搜索吗?从连接中删除 db="test" 并阅读 dev.mysql.com/doc/refman/5.0/en/sql-syntax.html 或 w3schools.com/sql/default.asp 是的,很多谷歌搜索(RTFM 并不粗鲁,但我不会问我是否能找到它)。是的,当我放弃“测试”时没有错误。问题是如何使用 python 而不是 SQL 创建数据库。 这里是语法,这行得通,至少是第一次。第二次自然返回数据库已经存在。现在来弄清楚如何正确使用 drop 命令。 db = MS.connect(host="localhost",user="root",passwd="****") db1 = db.cursor() db1.execute('CREATE DATABASE test1') “删除数据库测试 1”。虽然学习 SQL 是一件好事,但您可能还想研究对象关系映射器,可以说最好的是 sqlalchemy.org。 【参考方案1】:使用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:
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。
【讨论】:
我喜欢 phpmyadmin 来了解正在发生的事情。谢谢!【参考方案2】:我认为解决方案要容易得多,使用“如果不是”:
sql = "CREATE DATABASE IF NOT EXISTS test1"
db1.execute(sql)
【讨论】:
【参考方案3】: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 |
+-----------------+--------+
【讨论】:
以上是关于使用 Python 脚本创建 MySQLdb 数据库的主要内容,如果未能解决你的问题,请参考以下文章