使用 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 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何通过mysqldb将熊猫数据框插入数据库?

如何通过mysqldb将熊猫数据框插入数据库?

Python MySQLdb

python MySQLdb用法

Python MySQLdb没有插入数据

Python 2.7 MySQLdb将从数据库读取的最后一行保存到文本文件中