2012-03-09 3 views
-2

И поэтому я решил написать скрипт для установки Sams, первая часть установки основного приложения написана, но возникла проблема с подключением к базе данных MySQL в инструкциях по установке, следующий код:Как подключиться к mysql

1. mysql -u root -p (need pass MySQL) 
2. GRANT ALL ON squidctrl.* TO [email protected] IDENTIFIED BY "yourpassword"; 
3. GRANT ALL ON squidlog.* TO [email protected] IDENTIFIED BY "yourpassword"; (yourpassword – any wish pass) 

Поскольку пользователи помогли выложить, почему, как только я закончил сценарий, кто может пригодиться.

#connect to the database mysql 
user=raw_input('Mysql username -> ') 
password=raw_input('Mysql password -> ') 
db=MySQLdb.Connect(host="localhost", user=user, passwd=password) 
cursor=db.cursor() 
pass_sams=raw_input("chose password for sams user -> ") 
cursor.execute('GRANT ALL ON squidctrl.* TO [email protected] IDENTIFIED BY "%s";' % pass_sams) 
cursor.execute('GRANT ALL ON squidlog.* TO [email protected] IDENTIFIED BY "%s";' % pass_sams) 
cursor.close() 

Спасибо всем, кто помог в решении этой проблемы

+0

Если вам нужно взаимодействие с запущенной программой, используйте модуль подпроцесса. Но в этом случае лучше всего использовать некоторые библиотеки баз данных. – Adam

ответ

0

просто читать this link here

есть куча сайтов в Интернете, которые могут помочь вам узнать эту библиотеку. также this является официальным хранилищем проекта. нет смысла вызывать системные команды, когда у вас хороший интерфейс, хорошо документированный, который может помочь вам сделать все pythonwise

1

Если вы собираетесь обращаться к MySQL с Python, вы не должны делать это через os.system.

На самом деле, вы не должны вызывать подпроцессы с os.system, что для этого был разработан модуль subprocess. (И у вас будет быть в состоянии связаться с вашим подпроцессом тогда).

Что вы должны делать, это использовать модуль MySQLdb (вы должны установить его через пакет python-mysqldb с помощью apt). Вот как вы бы использовать:

import MySQLdb 
db = MySQLdb.connect(username='sams', password='yourpassword', db='mydb') 
cursor = db.cusor() 
cursor.execute('YOUR SQL GOES HERE') 
data = cursor.fetchall() #Or cursor.fetchone() for a single row. 

Теперь, вы можете рассмотреть вопрос об использовании альтернативных OurSQL, или даже с помощью ОРМ, например SQL Alchemy.

+0

Вышеуказанные команды были введены на терминале, но поскольку они перешли на язык сценариев, я не знаю, не могли бы вы написать более подробную информацию о функции? – nosensus

+0

Извините, но я действительно не понимаю, что вы имеете в виду. MySQLdb довольно прямолинейно: вы подключаетесь к базе данных, захватываете и курсор, а затем выполняете свой SQL. –

+0

Я попытаюсь объяснить свою цель – nosensus

0

Может быть, вы хотите выглядеть так: http://docs.sqlalchemy.org/en/latest/dialects/mysql.html

SQLAlchemy является ОРМ и сильно упрощает работу с базой данных, кроме того, если в будущем вы хотите перейти от MySQL к двигателю PostgreSQL, это очень просто, и вам не нужно переписывать какой-либо код.

Смежные вопросы