如何在Python中连接到MySQL数据库?

如何使用python程序连接到MySQL数据库?

使用Python连接到MYSQL三个步骤

1 – 设置

在做任何事之前你必须安装一个MySQL驱动程序。 与PHP不同的是,只有SQLite驱动程序默认安装在Python中。 最常用的软件包是MySQLdb,但使用easy_install很难安装。

对于Windows用户,你可以得到一个MySQLdb的exe文件 。

对于Linux,这是一个休闲软件包(python-mysqldb)。 (你可以在sudo apt-get install python-mysqldb中使用sudo apt-get install python-mysqldb (用于基于debian的发行版), yum install MySQL-python (用于基于rpm的),或者dnf install python-mysql (用于现代的fedora发行版)。

对于Mac,您可以使用Macport安装MySQLdb 。

2 – 用法

安装后,重新启动。 这不是强制性的,但是如果出现错误,将会阻止我回答这篇文章中的3或4个其他问题。 所以请重新启动。

那就像使用另一个软件包一样:

 #!/usr/bin/python import MySQLdb db = MySQLdb.connect(host="localhost", # your host, usually localhost user="john", # your username passwd="megajonhy", # your password db="jonhydb") # name of the data base # you must create a Cursor object. It will let # you execute all the queries you need cur = db.cursor() # Use all the SQL you like cur.execute("SELECT * FROM YOUR_TABLE_NAME") # print all the first cell of all the rows for row in cur.fetchall(): print row[0] db.close() 

当然,有上千种可能性和select。 这是一个非常基本的例子。 你将不得不看看文档。 一个好的起点 。

3 – 更高级的用法

一旦你知道它是如何工作的,你可能想要使用ORM来避免手工写入SQL,并像Python对象一样操纵你的表。 Python社区中最着名的ORM是SQLAlchemy 。

我强烈build议你使用它:你的生活将会变得更容易。

我最近在Python世界发现了另一颗gem: peewee 。 这是一个非常简单的ORM,非常容易和快速的设置然后使用。 它使我的一天,小项目或独立的应用程序,在那里使用像SQLAlchemy或Django的大工具是矫枉过正:

 import peewee from peewee import * db = MySQLDatabase('jonhydb', user='john', passwd='megajonhy') class Book(peewee.Model): author = peewee.CharField() title = peewee.TextField() class Meta: database = db Book.create_table() book = Book(author="me", title='Peewee is cool') book.save() for book in Book.filter(author="me"): print book.title 

这个例子是开箱即用的。 没有什么比peewee( pip install peewee )是必需的。

以下是一种方法:

 #!/usr/bin/python import MySQLdb # Connect db = MySQLdb.connect(host="localhost", user="appuser", passwd="", db="onco") cursor = db.cursor() # Execute SQL select statement cursor.execute("SELECT * FROM location") # Commit your changes if writing # In this case, we are only reading data # db.commit() # Get the number of rows in the resultset numrows = cursor.rowcount # Get and display one row at a time for x in range(0, numrows): row = cursor.fetchone() print row[0], "-->", row[1] # Close the connection db.close() 

在这里引用

Oracle(MySQL)现在支持一个纯Python连接器。 这意味着没有安装二进制文件:它只是一个Python库。 它被称为“连接器/ Python”。

http://dev.mysql.com/downloads/connector/python/

如果你不需要MySQLdb,但会接受任何库,我会非常非常推荐MySQL的MySQL连接器/ Python: http : //dev.mysql.com/downloads/connector/python/ 。

它是一个包(大约110k),纯Python,所以它是独立于系统的,而且安装简单。 你只要下载,双击,确认许可协议,然后去。 没有必要的Xcode,MacPorts,编译,重新启动…

然后你连接像:

 import mysql.connector cnx = mysql.connector.connect(user='scott', password='tiger', host='127.0.0.1', database='employees') try: cursor = cnx.cursor() cursor.execute(""" select 3 from your_table """) result = cursor.fetchall() print result finally: cnx.close() 

停止使用MySQLDb,如果你想避免安装mysql头只是为了从Python中访问MySQL。

使用pymysql 。 它完成了MySQLDb的所有工作,但是它完全是在Python中实现的, 没有外部依赖关系 。 这使得在所有操作系统上的安装过程保持一致和简单。 pymysql是替代MySQLDb和恕我直言,没有理由曾经使用MySQLDb的任何东西…永远! – PTSD from installing MySQLDb on Mac OSX and *Nix systems ,但这只是我。

安装

pip install pymysql

就是这样…你准备好玩了。

来自pymysql Github repo的示例用法

 import pymysql.cursors import pymysql # Connect to the database connection = pymysql.connect(host='localhost', user='user', password='passwd', db='db', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) try: with connection.cursor() as cursor: # Create a new record sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)" cursor.execute(sql, ('webmaster@python.org', 'very-secret')) # connection is not autocommit by default. So you must commit to save # your changes. connection.commit() with connection.cursor() as cursor: # Read a single record sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s" cursor.execute(sql, ('webmaster@python.org',)) result = cursor.fetchone() print(result) finally: connection.close() 

此外 – 快速,透明地replace现有代码中的MySQLdb

如果您现有的代码使用MySQLdb,则可以使用以下简单的过程轻松地将其replace为pymysql:

 # import MySQLdb << Remove this line and replace with: import pymysql pymysql.install_as_MySQLdb() 

所有后续对MySQLdb的引用将透明地使用pymysql。

作为一个数据库驱动程序,也有oursql 。 链接上列出的一些原因,这就是为什么ourql更好:

  • oursql有真实的参数化,分别将完整的SQL和数据发送到MySQL。
  • oursql允许将文本或二进制数据stream式传输到数据库中,并从数据库中stream出,而不需要在客户端中缓冲所有内容。
  • oursql既可以插入行,也可以懒散地插入行。
  • oursql默认支持unicode。
  • oursql支持python 2.4到2.7,在2.6+(参见PEP 218)上没有任何弃用警告,在2.7上没有完全失败(参见PEP 328)。
  • oursql在python 3.x上本地运行。

那么如何用MySQL连接到mysql?

非常类似于mysqldb:

 import oursql db_connection = oursql.connect(host='127.0.0.1',user='foo',passwd='foobar',db='db_name') cur=db_connection.cursor() cur.execute("SELECT * FROM `tbl_name`") for row in cur.fetchall(): print row[0] 

该文档中的教程是相当不错的。

当然对于ORM,SQLAlchemy是一个不错的select,正如其他答案中已经提到的那样。

尝试使用MySQLdb

有一个如何在这里页面: http : //www.kitebird.com/articles/pydbapi.html


来自页面:

 # server_version.py - retrieve and display database server version import MySQLdb conn = MySQLdb.connect (host = "localhost", user = "testuser", passwd = "testpass", db = "test") cursor = conn.cursor () cursor.execute ("SELECT VERSION()") row = cursor.fetchone () print "server version:", row[0] cursor.close () conn.close () 

尽pipe上面提供了所有的答案,但是如果您不想先连接到特定的数据库,例如,如果要创build数据库(!),则可以使用connection.select_db(database) ,如下所示。

 import pymysql.cursors connection = pymysql.connect(host='localhost', user='mahdi', password='mahdi', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) cursor = connection.cursor() cursor.execute("CREATE DATABASE IF NOT EXISTS "+database) connection.select_db(database) sql_create = "CREATE TABLE IF NOT EXISTS "+tablename+(timestamp DATETIME NOT NULL PRIMARY KEY)" cursor.execute(sql_create) connection.commit() cursor.close() 

MySQLdb是直接的方法。 您可以通过连接执行SQL查询。 期。

我喜欢的方式,也pythonic,是使用强大的SQLAlchemy来代替。 这里是一个查询相关的教程,这里是关于SQLALchemy的ORMfunction的教程。

只是在上面的答案修改。 只需运行这个命令为python安装mysql

 sudo yum install MySQL-python sudo apt-get install MySQL-python 

记得! 区分大小写。

也看看风暴 。 这是一个简单的SQL映射工具,它允许您轻松编辑和创buildSQL条目而无需编写查询。

这是一个简单的例子:

 from storm.locals import * # User will be the mapped object; you have to create the table before mapping it class User(object): __storm_table__ = "user" # table name ID = Int(primary=True) #field ID name= Unicode() # field name database = create_database("mysql://root:password@localhost:3306/databaseName") store = Store(database) user = User() user.name = u"Mark" print str(user.ID) # None store.add(user) store.flush() # ID is AUTO_INCREMENT print str(user.ID) # 1 (ID) store.commit() # commit all changes to the database 

寻找和使用对象:

 michael = store.find(User, User.name == u"Michael").one() print str(user.ID) # 10 

查找主键:

 print store.get(User, 1).name #Mark 

欲了解更多信息,请参阅教程 。

首先安装驱动程序

 pip install MySQL-python 

然后一个基本的代码是这样的:

 #!/usr/bin/python import MySQLdb try: db = MySQLdb.connect(host="localhost", # db server, can be a remote one db="mydb" # database user="mydb", # username passwd="mydb123", # password for this username ) # Create a Cursor object cur = db.cursor() # Create a query string. It can contain variables query_string = "SELECT * FROM MY_TABLE" # Execute the query cur.execute(query_string) # Get all the rows present the database for each_row in cur.fetchall(): print each_row # Close the connection db.close() except Exception, e: print 'Error ', e 

对于Python 3.3

CyMySQL https://github.com/nakagami/CyMySQL

我已经在我的Windows 7上安装了点子,只需要安装cymysql

(你不需要cython)快速和无痛