MySQL是现今最流行的数据库之一,接下来使用Python对MySQL进行curd操作。
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')