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


当前回答

Mysqlclient是最好的,因为其他的只支持特定版本的python

 pip install mysqlclient

示例代码

    import mysql.connector
    import _mysql
    db=_mysql.connect("127.0.0.1","root","umer","sys")
    #db=_mysql.connect(host,user,password,db)
    # Example of how to insert new values:
    db.query("""INSERT INTO table1 VALUES ('01', 'myname')""")
    db.store_result()
    db.query("SELECT * FROM new1.table1 ;") 
    #new1 is scheme table1 is table mysql 
    res= db.store_result()
    for i in range(res.num_rows()):
        print(result.fetch_row())

参见https://github.com/PyMySQL/mysqlclient-python

其他回答

Oracle (MySQL)现在支持纯Python连接器。这意味着不需要安装二进制文件:它只是一个Python库。它叫做“连接器/Python”。

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

安装完成后,您可以在这里看到一些使用示例

对于python 3.3

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

我在windows 7上安装了pip,只是 安装cymysql

(你不需要cython) 快速无痛

尽管你们中的一些人可能会把我的回答标记为重复,并对我抄袭别人的回答感到不安,但我真的想强调Napik先生回答的一个方面。因为我错过了这个,我导致了全国范围内的网站停机(9分钟)。如果有人分享这个信息,我就可以阻止它了!

下面是他的代码:

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()

这里重要的是Try and Finally子句。这允许始终关闭连接,不管代码的游标/sqlstatement部分发生了什么。大量的活动连接会导致DBLoadNoCPU峰值,并可能导致db服务器崩溃。

我希望这个警告有助于节省服务器和最终的工作!: D

这里有一种方法,使用MySQLdb,它只支持Python 2:

#!/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()

参考这里

对于较新版本的Python (>=3.6)

使用mysqlclient或pymysql(推荐)。

对于较旧版本的Python (<3.7, 2.4 <= Python <= 2.7)

如果您正在使用较旧版本的Python(不幸的是),那么您也可以尝试-> oursql。

但是请注意,该项目不再维护,错误修复也不会推送。


作为一个db驱动程序,还有oursql。这个链接列出了一些原因,说明了为什么oursql更好:

oursql有真正的参数化,将SQL和数据完全分开发送到MySQL。

Oursql允许文本或二进制数据流进数据库和流出数据库,而不是要求所有内容都缓冲在客户端。 Oursql既可以惰性地插入行,也可以惰性地获取行。 Oursql默认支持unicode。 oursql支持python 2.4到2.7,在2.6+上没有任何弃用警告(见PEP 218),在2.7上也没有完全失败(见PEP 328)。 Oursql在python 3.x上本机运行。

那么如何连接mysql与oursql?

与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是一个很好的选择,正如已经在其他答案中提到的那样。