Создайте функцию в Python, которая создает базу данных MySQL.Python

Программы на Python
Ответить
Anonymous
 Создайте функцию в Python, которая создает базу данных MySQL.

Сообщение Anonymous »

Я создал программу на Python и MySQL, которая создает базу данных, импортирует данные из текстовых файлов и помещает их в 4 разных столбца. Код работает, но я хочу изменить его и создать функции.

Может ли кто-нибудь помочь мне создать функцию, создающую базу данных MySQL? Вот код, который у меня есть на данный момент. Заранее спасибо!

import MySQLdb

# Create connection to the MySQL database - Make sure host, user,
# passwd are consistent with the database you are trying to conect to

def create_database():
db_connection = MySQLdb.connect(host='localhost', user='root', passwd='password')

# Variable that exacutes Database calls with MySQL

cursor = db_connection.cursor()

# Create databse with MYSQL query - databasename

cursor.execute('CREATE DATABASE inb104')

# Select which database to use with MYSQL query - databasename

cursor.execute('USE inb104')

# Create database with MYSQL query - tablename & fields

cursor.execute('''CREATE TABLE popularity (
PersonNumber INT,
Value VARCHAR(70),
Category VARCHAR(25),
PRIMARY KEY (PersonNumber, Value, Category)
)
''')

cursor.execute("LOAD DATA LOCAL INFILE 'tv.txt' INTO TABLE popularity FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n' (PersonNumber, Value, Category) SET Category='TV'")

cursor.execute("LOAD DATA LOCAL INFILE 'actors.txt' INTO TABLE popularity FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n' (PersonNumber, Value, Category) SET Category='Actors'")

cursor.execute("LOAD DATA LOCAL INFILE 'movies.txt' INTO TABLE popularity FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n' (PersonNumber, Value, Category) SET Category='Movies'")

cursor.execute("LOAD DATA LOCAL INFILE 'sports.txt' INTO TABLE popularity FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n' (PersonNumber, Value, Category) SET Category='Sports'")

cursor.execute("LOAD DATA LOCAL INFILE 'activities.txt' INTO TABLE popularity FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n' (PersonNumber, Value, Category) SET Category='Activities'")

cursor.execute("LOAD DATA LOCAL INFILE 'musicians.txt' INTO TABLE popularity FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n' (PersonNumber, Value, Category) SET Category='Musicians'")

cursor.execute("LOAD DATA LOCAL INFILE 'games.txt' INTO TABLE popularity FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n' (PersonNumber, Value, Category) SET Category='Games'")

cursor.execute("LOAD DATA LOCAL INFILE 'books.txt' INTO TABLE popularity FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n' (PersonNumber, Value, Category) SET Category='Books'")

# commit the changes to the database
db_connection.commit()

# close the cursor and connection
cursor.close()

db_connection.close()




Хорошо, это то, что у меня есть на данный момент.

Я получаю следующую ошибку: TypeError: data_entry() не принимает аргументов (задан 1)
И данные также не вставляются в таблицу из текстовых файлов. Будем очень признательны за любую помощь!

import MySQLdb

def connect_to_database(user, password):

return MySQLdb.connect(host='localhost', user=user, passwd=password)

def create_database(cursor):

cursor.execute('CREATE DATABASE inb104')

cursor.execute('USE inb104')

cursor.execute('''CREATE TABLE popularity (
PersonNumber INT,
Value VARCHAR(70),
Category VARCHAR(25),
PRIMARY KEY (PersonNumber, Value, Category)
)
''')

def load_file(cursor, *files):
"""Load the files given in (filename, category) format."""
sql = '''LOAD DATA LOCAL INFILE '%s' INTO TABLE popularity
FIELDS TERMINATED BY '\\t'
LINES TERMINATED BY '\\n'
(PersonNumber, Value, Category)
SET Category='%s'")
'''
for filename, category in files:
cursor.execute(sql, (filename, category))

def data_entry():
"""Connect to the DB server, create the DB and table and load the table with records
"""
db = connect_to_database('root', 'password')
cursor = db.cursor()
create_database(cursor)
load_files(cursor,('tv.txt', 'TV'), ('actors.txt', 'Actors'),
('movies.txt', 'Movies'))
db.commit()
cursor.close()
db.close()


Подробнее здесь: https://stackoverflow.com/questions/396 ... l-database
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»