专栏首页codersamPython每天五分钟-操作MySQL(mysql.connector)

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')

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 服务器使用秘钥进行登录并禁止root用户使用密码登录

    id_rsa.pub 是私钥 id_rsa 是公钥 authorized_keys 是sshd服务配置的文件名所以将私钥内容输出进来

    用户2475223
  • Python每天五分钟-操作MySQL(PyMySQL)

    综上所述,选择库的时候要根据公司的开发环境来做取舍,没有最好的只有更适合当前项目的。

    用户2475223
  • PHP的多维数组排序

    熟悉PHP的小伙伴都知道有很多内置函数可以对数组进行排序操作或者自定义一些排序方法(冒泡)等等。

    用户2475223
  • mysql 3.x拿webshell

    mysql> Create TABLE demo (sanr text NOT NULL);

    py3study
  • MySQL部署之源码安装

    Cyylog
  • 服务器的Mysql初始化设置

    继上篇博客记录了服务器的初始化安全设置之后,本篇文章会记录Mysql数据库的初始化安全设置。在操作mysql之前,最好先行备份,毕竟有“备”无患嘛。

    Originalee
  • 基于Centos6.5源码编译安装mysql-5.7.17

    基于Centos6.5源码编译安装mysql-5.7.17过程详解 由于工作需要,需要在centos6.5服务器上安装mysql5.7,如下是详细安装过程。

    冬天里的懒猫
  • MySQL 主从同步架构中你不知道的“坑”

    结论:此种模式下此配置对默认的库进行不同步数据库,需要增加相关表的参数,最后测试得出不加replicate-ignore-db = mysql参数,同样对默认的...

    民工哥
  • mysql常用命令

    这几天学习了一下mysql,对于mysql的命令总结如下,发现很多方面和oracle还是差别挺大的。 # mysql -uroot -p Enter passw...

    jeanron100
  • 企业级LNMP架构搭建实例(基于Centos6.x)

    1.1 部署LNMP架构说明 1.1.1 LNMP架构内容   01.部署linux系统   02.部署nginx网站服务   03.部署mysql数据库服务 ...

    惨绿少年

扫码关注云+社区

领取腾讯云代金券