博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL Python教程(3)
阅读量:5368 次
发布时间:2019-06-15

本文共 4385 字,大约阅读时间需要 14 分钟。

Class cursor.MySQLCursor

具体方法和属性如下:

Constructor cursor.MySQLCursor
Method MySQLCursor.callproc(procname, args=())
Method MySQLCursor.close()
Method MySQLCursor.execute(operation, params=None, multi=False)
Method MySQLCursor.executemany(operation, seq_params)
Method MySQLCursor.fetchall()
Method MySQLCursor.fetchmany(size=1)
Method MySQLCursor.fetchone()
Method MySQLCursor.fetchwarnings()
Method MySQLCursor.stored_results()
Property MySQLCursor.column_names
Property MySQLCursor.description
Property MySQLCursor.lastrowid
Property MySQLCursor.statement
Property MySQLCursor.with_rows

 

Constructor cursor.MySQLCursor

使用MySQLConnection对象来初始化

Method MySQLCursor.callproc(procname, args=())

调用procname程序,args要包含所有需要用到的参数。返回值类型为MySQLCursorBuffered。

# Definition of the multiply stored procedure:

# CREATE PROCEDURE multiply(IN pFac1 INT, IN pFac2 INT, OUT pProd INT)
# BEGIN
# SET pProd := pFac1 * pFac2;
# END
>>> args = (5, 5, 0) # 0 is to hold value of the OUT parameter pProd
>>> cursor.callproc('multiply', args)
('5', '5', 25L)

Method MySQLCursor.close()

每次使用完cursor后,调用该函数关闭。

Method MySQLCursor.execute(operation, params=None, multi=False)

该函数用来提出针对数据库的操作。params是操作中的参数。
insert = (
"INSERT INTO employees (emp_no, first_name, last_name, hire_date) "
"VALUES (%s, %s, %s, %s)")
data = (2, 'Jane', 'Doe', datetime.date(2012, 3, 23))
cursor.execute(insert, data)
select = "SELECT * FROM employees WHERE emp_no = %(emp_no)s"
cursor.execute(select, { 'emp_no': 2 })

如果multi参数设置为true,则可以执行多条语句,返回值为指向每个结果的迭代器。

operation = 'SELECT 1; INSERT INTO t1 VALUES (); SELECT 2'
for result in cursor.execute(operation):
if result.with_rows:
print("Statement '{}' has following rows:".format(
result.statement))
print(result.fetchall())
else:
print("Affected row(s) by query '{}' was {}".format(
result.statement, result.rowcount))

Method MySQLCursor.executemany(operation, seq_params)

数据库操作operation会执行多次,直至seq_params中所有参数执行完毕。
data = [
('Jane', date(2005, 2, 12)),
('Joe', date(2006, 5, 23)),
('John', date(2010, 10, 3)),
]
stmt = "INSERT INTO employees (first_name, hire_date) VALUES (%s, %s)"
cursor.executemany(stmt, data)

Method MySQLCursor.fetchall()

返回查询的结果集合。
>>> cursor.execute("SELECT * FROM employees ORDER BY emp_no")
>>> head_rows = cursor.fetchmany(size=2)
>>> remaining_rows = cursor.fetchall()

Method MySQLCursor.fetchmany(size=1)

返回接下来的size个查询结果,如果没有足够的结果,则返回空的list。

Method MySQLCursor.fetchone()

返回接下来的一个查询结果,该函数在fetchamany()和fetchalll()中调用。
# Using a while-loop
cursor.execute("SELECT * FROM employees")
row = cursor.fetchone()
while row is not None:
print(row)
row = cursor.fetchone()
# Using the cursor as iterator
cursor.execute("SELECT * FROM employees")
for row in cursor:
print(row)
Method MySQLCursor.fetchwarnings()
设置get_warnings为true后,能通过该函数获取警告元组。
>>> cnx.get_warnings = True
>>> cursor.execute('SELECT "a"+1')
>>> cursor.fetchall()
[(1.0,)]
>>> cursor.fetchwarnings()
[(u'Warning', 1292, u"Truncated incorrect DOUBLE value: 'a'")]

Method MySQLCursor.stored_results()

调用 callproc()后,产生的结果集合可以用该函数获取。
>>> cursor.callproc('sp1')
()
>>> for result in cursor.stored_results():
... print result.fetchall()
...
[(1,)]
[(2,)]

Property MySQLCursor.column_names

只读属性。返回一个Unicode编码的string,为结果集合的列名称。
cursor.execute("SELECT last_name, first_name, hire_date "
"FROM employees WHERE emp_no = %s", (123,))
row = dict(zip(cursor.column_names, cursor.fetchone())
print("{last_name}, {first_name}: {hire_date}".format(row))

Property MySQLCursor.description

返回cursor结果集合的描述。

import mysql.connector

from mysql.connector import FieldType
...
cursor.execute("SELECT emp_no, last_name, hire_date "
"FROM employees WHERE emp_no = %s", (123,))
for i in range(len(cursor.description)):
print("Column {}:".format(i+1))
desc = cursor.description[i]
print("column_name = {}".format(desc[0]))
print("type = {} ({})".format(desc[1], FieldType.get_info(desc[1])))
print("null_ok = {}".format(desc[6]))
print("column_flags = {}".format(desc[7]))
输出如下:
Column 1:
column_name = emp_no
type = 3 (LONG)
null_ok = 0
column_flags = 20483
Column 2:
column_name = last_name
type = 253 (VAR_STRING)
null_ok = 0
column_flags = 4097
Column 3:
column_name = hire_date
type = 10 (DATE)
null_ok = 0
column_flags = 4225

Property MySQLCursor.lastrowid
返回最近修改的列的id值。

Property MySQLCursor.statement

返回上一次的执行结果。

Property MySQLCursor.with_rows

如果返回结果提供rows,该值为true。

 

转载于:https://www.cnblogs.com/bigbigtree/p/3247477.html

你可能感兴趣的文章
Linux的加密认证功能以及openssl详解
查看>>
[Tools] 使用XP远程登录Win8系统
查看>>
【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
查看>>
HDU- 2265 Encoding The Diary
查看>>
socket基本概念
查看>>
[第三方]SCNetworkReachability 获取网络状态控件使用方法
查看>>
在Windows上使用putty连接一台Linux主机
查看>>
Socket常见错误
查看>>
百度地图2.0API和3.0API。你想要的百度地图的这都有
查看>>
专业词汇
查看>>
星期五的收获
查看>>
proxmox 去除订阅提示
查看>>
使用Html.EditorFor()为文本框加上maxlength,placeholder等属性
查看>>
[转]后缀数组求最长重复子串
查看>>
设计模式——外观模式详解
查看>>
MVC3 控件
查看>>
mysql (一)
查看>>
photoshop图层样式初识1
查看>>
【.NET】使用HtmlAgilityPack抓取网页数据
查看>>
typedef的使用
查看>>