Python 之MySQL连接数据库

一、安装pymysql

pip install pymysql

你的系统不支持或者你没有使用pip来管理python,那么你可以通过下列方式来完成pymysql的安装:

git clone https://github.com/PyMySQL/PyMySQL
cd PyMySQL/
python3 setup.py install

注意:安装的过程中可能会出现"ImportError: No module named setuptools"的错误提示,意思是你没有安装setuptools,你可以访问https://pypi.python.org/pypi/setuptools 找到各个系统的安装方法。

安装完毕pymysql之后,就可以增删改查了

首先,链接数据库。你可以这样连:

# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )

也可以这样连:

# 连接数据库
data={
'host':localhost,
'user':testuser,
'passwd':test123,
'db':TESTDB
}
db=pymysql.connect(**data)

还可以这样连:

# 连接数据库
db=pymysql.connect(host='localhost', user='testuser', password='test123', db='TESTDB')

以上链接方法中,总有一种适合你。

接下来,我们来看看执行sql语句的方法:

# 定义sql语句
sql=‘select * from TESTDB where id=01’
# 创建cursor游标
cursor=db.cursor()
# 执行sql
cursor.execute(sql)
# 提交到数据库执行
db.commit()

python查询pymysql数据库数据,用fetchone()获取单条信息,用fetchall()获取多条信息

fetchone():该方法获取下一个结果集,结果集是一个对象

fetchall():该方法获取全部的返回结果行

rowcount():这是一个只读属性,并返回执行execute()后影响的行数

# 取得单条结果
cursor.fetchone()
# 取得所有结果
cursor.fetchall()

 

二、python操作查询数据库的时候,返回值是  [(,)(,)(,)]  tuple  list类型

这两个函数,标记一下:

fetchone() :返回单个的元组,也就是一条记录(row),如果没有结果 则返回 None

fetchall() :返回多个元组,即返回多个记录(rows),如果没有结果 则返回 ()

需要注明:在MySQL中是NULL,而在Python中则是None

 

用法如下所示:

fetchone()用法:cur.execute("select host,user,password from user where user='%s'" %acc)
                           jilu = cur.fetchone()       ##此时 通过 jilu[0],jilu[1],jilu[2]可以依次访问host,user,password

fetchall()用法:cur.execute("select * from user")

 

(1)如果select本身取的时候有多条数据时:

cursor.fetchone():将只取最上面的第一条结果,返回单个元组如('id','title'),然后多次使用cursor.fetchone(),依次取得下一条结果,直到为空。

cursor.fetchall() :将返回所有结果,返回二维元组,如(('id','title'),('id','title')),

(2)如果select本身取的时候只有一条数据时:

cursor.fetchone():将只返回一条结果,返回单个元组如('id','title')。

cursor.fetchall() :也将返回所有结果,返回二维元组,如(('id','title'),),

 

备注:其中的id和title为具体的内容

python在mysql在使用fetchall或者是fetchone时,综合起来讲,fetchall返回二维元组(元组中含有元组),fetchone只返回一维元组。

 

示例代码:

import pymysql

# 连接数据库
data={
    'host':"st-mysql-m.a.pa.com",
    'user':'xxxx',
    'passwd':'xxxx',
    'db':'service_db'
}

db = pymysql.connect(**data)

# 定义sql语句
sql= "select *from service_db.t_sms_log where t_sms_log.sMobile = 'xxxxxx'  order by iAutoID  DESC  limit 2"
# 创建cursor游标
cursor=db.cursor()
# 执行sql
cursor.execute(sql)
# 提交到数据库执行
db.commit()

# 取得单条结果
result = cursor.fetchall()
print(result[0][0])

# 取得所有结果
# cursor.fetchall()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章