Python每天五分钟-操作MySQL(mysql.connector)

MySQL是现今最流行的数据库之一,接下来使用Python对MySQL进行curd操作。

安装mysql.connector拓展

pip install mysql-connector

python -m pip install mysql-connector

当出现Successfully installed mysql-connector2.2.9时表示安装成功。

连接数据库

# 引入拓展
import mysql.connector
# 连接配置
conn = mysql.connector.connect(
	host = '127.0.0.1', # 数据库ip
	user = 'username', # 用户
	passwd = 'password', # 密码
	database = 'database' # 数据库名
)
print(conn)

最终会打印一个数据库连接对象

创建数据表

# 引入拓展
import mysql.connector
# 连接配置
conn = mysql.connector.connect(
	host = '127.0.0.1', # 数据库ip
	user = 'username', # 用户
	passwd = 'password', # 密码
	database = 'database' # 数据库名
)
mycursor = conn.cursor()

mycursor.execute('CREATE TABLE `user` (`id`  int(10) NOT NULL AUTO_INCREMENT ,`name` varchar(255) NOT NULL, `url` varchar(255) NOT NULL ,PRIMARY KEY (`id`))ENGINE=InnoDB DEFAULT CHARACTER SET=utf8')

mycursor.execute('SHOW TABLES')

for x in mycursor:
	print(x)
# 输出结果 会把当前库的每个表名放在元祖中返回
(user, )

增删改数据

# 引入拓展
import mysql.connector
# 连接配置
conn = mysql.connector.connect(
	host = '127.0.0.1', # 数据库ip
	user = 'username', # 用户
	passwd = 'password', # 密码
	database = 'database' # 数据库名
)
mycursor = conn.cursor()
sql = "INSERT INTO user (name, url) VALUES (%s, %s)" # 防止SQL注入,使用占位符
val = ("abc", "ddd")
mycursor.execute(sql, val) # 执行语句 execute() 并不会真正的将数据插入,会将当前语句保存为一个事务节点。
conn.commit() # 提交事务
print(mycursor.rowcount, "记录插入成功。 ID:", mycursor.lastrowid)
# rowcount:影响的数据行数,lastrowid 新插入数据的主键值

批量插入

# 引入拓展
import mysql.connector
# 连接配置
conn = mysql.connector.connect(
	host = '127.0.0.1', # 数据库ip
	user = 'username', # 用户
	passwd = 'password', # 密码
	database = 'database' # 数据库名
)
mycursor = conn.cursor()
sql = "INSERT INTO user (name, url) VALUES (%s, %s)" # 防止SQL注入,使用占位符
val = [
	("abc", "ddd"),
	("abc", "ddd"),
	("abc", "ddd"),
	("abc", "ddd")
]
mycursor.execute(sql, val) # 执行语句 execute() 并不会真正的将数据插入,会将当前语句保存为一个事务节点。
conn.commit() # 提交事务
print(mycursor.rowcount, "记录插入成功。 ID:", mycursor.lastrowid)
# rowcount:影响的数据行数,lastrowid 新插入数据的主键值

需要注意的是lastrowid 这个时候只会返回第一条插入的主键值而不是最后一条
更新

# 引入拓展
import mysql.connector
# 连接配置
conn = mysql.connector.connect(
	host = '127.0.0.1', # 数据库ip
	user = 'username', # 用户
	passwd = 'password', # 密码
	database = 'database' # 数据库名
)
mycursor = conn.cursor()
sql = "UPDATE user SET name = %s WHERE id = %s"
val = ("xyz", 6)
mycursor.execute(sql, val) # 执行语句 execute() 并不会真正的将数据插入,会将当前语句保存为一个事务节点。
conn.commit() # 提交事务
print(mycursor.rowcount, "记录更新成功。 ID:", mycursor.lastrowid)
# rowcount:影响的数据行数,lastrowid 新插入数据的主键值

删除

# 引入拓展
import mysql.connector
# 连接配置
conn = mysql.connector.connect(
	host = '127.0.0.1', # 数据库ip
	user = 'username', # 用户
	passwd = 'password', # 密码
	database = 'database' # 数据库名
)
mycursor = conn.cursor()
sql = "DELETE FROM user WHERE name = %s"
val = ("xyz",)
mycursor.execute(sql, val) # 执行语句 execute() 并不会真正的将数据插入,会将当前语句保存为一个事务节点。
conn.commit() # 提交事务
print(mycursor.rowcount, "记录更新成功。 ID:", mycursor.lastrowid)
# rowcount:影响的数据行数,lastrowid 新插入数据的主键值

查询数据

# 引入拓展
import mysql.connector
# 连接配置
conn = mysql.connector.connect(
	host = '127.0.0.1', # 数据库ip
	user = 'username', # 用户
	passwd = 'password', # 密码
	database = 'database' # 数据库名
)
mycursor = conn.cursor()

sql = "SELECT * FROM user WHERE id = %s"
condition = (2,)
mycursor.execute(sql, condition)
result = mycursor.fetchall() # 获取全部数据
# result = mycursor.fetchone() # 获取1条
print(result)
# 全部数据的输出结果
[(1, 'abc', 'ddd'), (2, 'abc', 'aaa'), (3, 'abc', 'ccc'), (4, 'abc', 'bbb'), (5, 'abc', 'eee')]
# 获取1条的输出结果
(1, 'abc', 'ddd')
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注