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' # 数据库名
)

创建数据表

# 引入拓展
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 新插入数据的主键值

--------------------分割线---------------------

# 更新
# 引入拓展
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')
最后修改:2020 年 08 月 13 日 10 : 59 AM
如果觉得我的文章对你有用,请随意赞赏