使用Python脚本创建MySQLdb数据库

16 投票
3 回答
66516 浏览
提问于 2025-04-17 10:38

我在创建数据库和表的时候遇到了一些麻烦。这个数据库需要在一个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")

3 个回答

7

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能会在使用某个特定的功能时,发现它并没有按照预期工作。这种情况可能是因为我们没有正确理解这个功能的用法,或者是因为我们在使用它时犯了一些小错误。

在这种情况下,查阅相关的文档或者在网上搜索解决方案是很有帮助的。很多时候,其他人也遇到过类似的问题,他们会在论坛上分享他们的经验和解决办法。通过这些讨论,我们可以学习到如何更好地使用这些工具,避免重复犯错。

总之,遇到问题时不要气馁,积极寻找答案和帮助是学习编程的重要部分。记住,大家都是从新手开始的,慢慢来,总会找到解决办法的。

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   |
+-----------------+--------+
14

我觉得这个解决办法简单多了,可以用“如果不是”的方式:

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

使用 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了。

撰写回答