我怎样才能连接到mysql

时间:2012-03-09 12:22:07

标签: python mysql

所以我决定编写一个脚本来安装Sams,安装主应用程序的第一部分是编写的,但是连接到数据库的问题MySQL在安装说明中有以下代码:

1. mysql -u root -p (need pass MySQL)
2. GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY "yourpassword";
3. GRANT ALL ON squidlog.* TO sams@localhost 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 sams@localhost IDENTIFIED BY "%s";' % pass_sams)
cursor.execute('GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY "%s";' % pass_sams)
cursor.close()

感谢所有帮助解决此问题的人

3 个答案:

答案 0 :(得分:1)

如果您要从Python访问MySQL,则不应通过os.system进行访问。

实际上,您不应该使用os.system来调用子进程,这是subprocess模块的设计目标。 (然后你 能够与你的子进程通信)。

您实际应该做的是使用MySQLdb模块(您应该可以使用apt通过python-mysqldb数据包安装它)。以下是您使用它的方式:

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,甚至使用ORM,例如SQL Alchemy

答案 1 :(得分:0)

只需阅读this link here

网上有很多网站可以帮助你学习这个图书馆。另外,this是该项目的官方存储库。调用系统命令是没有意义的,当你有一个很好的接口,有很好的文档记录,可以帮助你做所有的pythonwise

答案 2 :(得分:0)

也许你想看看这个:http://docs.sqlalchemy.org/en/latest/dialects/mysql.html

Sqlalchemy是一个ORM,简化了数据库的工作,而且将来也是如此 你想从MySQL改为PostgreSQL引擎,它非常简单,你不需要重写任何代码。