connect()函数,该函数用于连接数据库,并返回数据库连接对象。
数据库连接对象通常会具有如下方法和属性。
游标对象通常会具有如下方法和属性。
Python的DB API 2.0由一个connect()开始,一共涉及数据库连接和游标两个核心
API。它们的分工如下。
使用Python DB API 2.0操作数据库的基本流程如下。
①调用connect()方法打开数据库连接,该方法返回数据库连接对象。
②通过数据库连接对象打开游标。
③ 使用游标执行SQL语句(包括DDL、DML、select查询语句等)。如果执行的是査询语句,则处理查询数据。
④关闭游标。
⑤关闭数据库连接。
査看己安装的模块,使用如下命令。
pip 3how packagename
启动命令行窗口,在窗口中输入如下命令。
pip show mysql-connector-python
在上面的命令中,mysql-connector-python就是该模块的名字。
卸载已安装的模块,使用如下命令。
pip uninstall packagename
在命令行窗口中输入如下命令。
pip uninstall mysql-connector-python
如果要查看已安装的所有模块,可以使用如下命令。
pip list
安装模块,使用如下命令。
pip install packagename
在命令行窗口中输入如下命令。
pip install mysql-connector-python
运行该命令,将看到程序下载并安装mysql-connector-python模块的过程,最后会生成如下提示信息。
Successfully installed mysql-connector-python-8.0.11
上面的信息提示该模块安装成功。
如果希望安装不同版本的模块,则可指定版本号。例如:
pip install packagename ==1.0.4 # 安装指定版本
Python程序在连接MySQL数据库时可指定远程服务器IP地址和端口,如果不指定服务器IP地址和端口,则使用默认的服务器IP地址localhost和默认端口 3306。
代码如下:
import mysql.connector
# ①、连接数据库
conn = mysql.connector.connect(user='root', password='32147',
host='localhost', port='3306',
database='python', use_unicode=True)
# ②、获取游标
c = conn.cursor()
# ③、执行DDL语句创建数据表
c.execute('''create table user_tb(
user_id int primary key auto_increment,
name varchar(255),
pass varchar(255),
gender varchar(255))''')
# 执行DDL语句创建数据表
c.execute('''create table order_tb(
order_id integer primary key auto_increment,
item_name varchar(255),
item_price double,
item_number double,
user_id int,
foreign key(user_id) references user_tb(user_id) )''')
# ④、关闭游标
c.close()
# ⑤、关闭连接
conn.close()
MySQL数据库模块同样可以使用游标的execute()方法执行DML的insert、update、delete语句,对数据库进行插入、修改和删除数据操作。
# ③、调用executemany()方法把同一条SQL语句执行多次
c.executemany('insert into user_tb values(null, %s, %s, %s)',
(('sun', '123456', 'male'),
('bai', '123456', 'female'),
('zhu', '123456', 'male'),
('niu', '123456', 'male'),
('tang', '123456', 'male')))
使用MySQL数据库模块中游标的executemany()方法同样可重复执行update、delete语句。
调用execute()方法执行select语句査询数据,在该SQL语句中同样使用了%s作为占位符。
MySQL数据库模块为游标对象提供了一个非标准的callproc(sel£ procname, args=())方法,该方法用于调用数据库存储过程。该方法的procname参数代表存储过程的名字,而args参数则用于为存储过程传入参数。
# ③、调用callproc()方法执行存储过程
# 虽然add_pro存储过程需要3个参数,但最后一个参数是传出参数,
# 因此程序不会用它的值
result_args = c.callproc('add_pro', (5, 6, 0))
# 返回的result_args既包含了传入参数的值,也包含了传出参数的值
print(result_args)
# 如果只想访问传出参数的值,可直接访问result_args的第3个元素,如下代码
print(result_args[2])
运行上面的程序,可以看到如下输出结果。
(5, 6, 11)
11