概述
python3.0操作Mysql数据库有两种驱动方式,分别是pyMysql和mysql.connector
(1)PyMySQL 是 Python 中用于连接 MySQL 服务器的一个库,它遵循 Python 数据库 API 规范 V2.0,并包含了 pure-Python MySQL 客户端库。
MySQL-python :是封装了 MySQL C驱动的 Python 驱动。
(2)mysql.connector: MySQL 服务器以独立的进程运行,并通过网络对外服务,所以,需要支持 Python 的 MySQL 驱动来连接到 MySQL 服务器。
mysql-connector-python:是 MySQL 官方的纯 Python 驱动;
使用mysql connector连接数据库
1.1 安装mysql-connector-python驱动
pip install mysql-connector-python
1.2 使用mysql-connector
1.2.1 连接数据库
连接数据库可以使用connector类的connect()方法,传入服务器、端口号、用户名、密码、数据库等参数,其中服务器与端口号可省略,默认为localhost:3306。
def connectdb():
print("请连接数据库........")
db = mysql.connector.connect(host='localhost',
port='3306',
user="root",
password="123456",
database="Test")
print("连接数据库成功")
return db
1.2.2 数据库、数据表操作
对数据库、数据表的操作属于模式定义语言(DDL),所有DDL语句的执行都是依赖于一个叫cursor的数据结构进行操作的。通过从connect对象中获取cursor对象后就可以进行数据库、表的相关操作了。例如创建一个数据库、数据表、操作数据表等
python中三个双引号的作用
1.进行多行注释
2.定义多行字符串
#3. 创建数据表
def createtable(db):
cursor = db.cursor() #使用cursor()获取操作游标
cursor.execute("DROP TABLE IF EXISTS student") #检查是否存在数据表,如果存在则删除
sql = """CREATE TABLE student(
id INT(20) NOT NULL AUTO_INCREMENT,
stuname VARCHAR(20) DEFAULT NULL COMMENT '学生姓名',
stusex INT(20) DEFAULT NULL COMMENT '性别',
PRIMARY KEY(id)
)"""
cursor.execute(sql) #创建新的student表
1.2.3 对表数据增删改
插入、删除、修改操作依旧是通过cursor对象来实现,通过cursor的execute()方法执行SQL操作,参数是要执行的SQL语句。
(1)插入数据
SQL语句中的变量可以用%s的形式作为占位符
插入数据的方式有三种:元祖、字典、数组
元祖:以python中元组的形式在执行时将变量填入
sql = "INSERT INTO student (stuname, stusex) VALUES (%s, %s)"
val = [
("张三", "男"),
("李四","女"),
("王五","男"),
("牛六","男")
]
cursor.executemany(sql,val)
db.commit()
注意元组的特殊用法:空元组以及只包含一个元素的元组
在执行完所有的SQL操作后记得要通过数据库对象的**commit()**将操作事务提交到数据库,数据表内容有更新就必须要用到commit()方法
如果需要撤销则通过rollback()方法回滚操作。
#4. 插入数据
def insertdb(db):
cursor = db.cursor() # 使用cursor()获取操作游标
#SQL 插入语句
sql = """INSERT INTO student (id, stuname, stusex) VALUES
("1","张三","男"),
("2","李四","女"),
("3","王五","男"),
("4","牛六","男")
"""
try:
# 执行SQL语句
cursor.execute(sql)
# 通过数据库对象的commit()将操作事务提交到数据库
db.commit()
print("3.成功插入%d条数据" % (cursor.rowcount))
except:
print("插入数据失败")
#需要撤销
db.rollback()
(2)修改、删除数据
修改、删除数据的方法与插入类似,只需要把对应的SQL语句和变量值传给execute()函数即可。
删除数据:
sql = "DELETE FROM student WHERE stuname = %s"
val = ('张三',) #元组中只包含一个元素时,需要在这个元祖后面加一个逗号才能生效
# 执行SQL语句
cursor.execute(sql,val)
# 通过数据库对象的commit()将操作事务提交到数据库
db.commit()
修改数据:
#更新数据
sql = "UPDATE student SET stuname = %s WHERE id = %s"
val = ('hello', '002') # 元组中只包含一个元素时,需要在这个元祖后面加一个逗号才能生效
cursor.execute(sql, val)
# 通过数据库对象的commit()将操作事务提交到数据库
db.commit()
1.2.4 查询数据表
执行查询操作和之前类似,都是通过execute()执行对应的SQL语句,在执行时将相应的数据填入即可
(1)按条件查询数据结果
#按条件查询
sql = """SELECT stuname,stusex FROM student WHERE id between %s AND %s"""
try:
# 执行SQL语句
cursor.execute(sql,(10,20))
for (stuname,stusex) in cursor:
print("%s的性别为%s" % (stuname, stusex))
except:
print("Error: unable to fecth data")
(2)查询所有学生信息
也可以通过cursor的fetchall()、fetchone()方法取得所有或一条结果集。
def querydb(db):
cursor = db.cursor() # 使用cursor()获取操作游标
#SQL 查询语句,查询所有学生信息
sql = "SELECT * FROM student"
try:
# 执行SQL语句
cursor.execute(sql)
#获取所有记录列表
result = cursor.fetchall()
for row in result:
id = row[0]
stuname = row[1]
stusex = row[2]
#打印结果
print("id:%s, stuname:%s, stusex:%s" %(id, stuname, stusex))
except:
print("Error: unable to fecth data")
主函数及入口函数:
def main():
db = connectdb() #连接数据库
createtable(db) #创建表
insertdb(db) #插入数据
print("4.插入操作后查询到的数据为")
querydb(db) # 查询数据
deletedb(db) #删除数据
print("删除操作后查询到的数据为")
querydb(db) #查询数据
updatedb(db) #更新数据
print("更新操作后查询到的数据为")
querydb(db)
closedb(db)
if __name__ == '__main__':
main()
if __name__ == '__main__:' main()
功能及原理
python文件可以用到两个地方,1.直接作为脚本运行;2.import到其他python文件中被调用(模块重用)
上述语句在作为脚本文件执行时if name == 'main:后面的语句才会被执行到。被import到其他文件中if name == 'main:后面的语句不会被执行到。因为每个python模块即.py文件都有一个内置变量_name_,当运行模块被执行的时候,__name__等于文件名(包含了后缀.py);如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。而“main”等于当前执行文件的名称(包含了后缀.py)。进而当模块被直接执行时,name == 'main’结果为真。
最后
以上就是激情香菇为你收集整理的python连接Mysql数据库之mysql connector连接数据库的全部内容,希望文章能够帮你解决python连接Mysql数据库之mysql connector连接数据库所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复