Подтвердить что ты не робот

Создайте базу данных MySQLdb с помощью Python script

У меня возникли проблемы с созданием базы данных и таблиц. База данных должна быть создана в Python script.

#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, но как? Я пробовал CREATE перед операцией connect(), но получаю ошибки.

Как только база данных будет создана, как мне создать таблицы? Благодаря, Том

Вот синтаксис, это работает, по крайней мере, в первый раз. Второй раз, естественно, возвращается, что 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")
4b9b3361

Ответ 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.

Как только вы экспериментируете с этим, вы можете написать SQL в Python.

Ответ 2

Я думаю, что решение намного проще, используйте "if not":

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('[email protected]','test')")

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

# disconnect from server
db.close()

#OUTPUT

mysql> select * from test;
+-----------------+--------+
| email           | pwd    |
+-----------------+--------+
| [email protected]  | test   |
+-----------------+--------+