Python下的链接mysql数据库
准备工作:首先使用pip下载mysql-connector包
pip install mysql-connector -i https://pypi.tuna.tsinghua.edu.cn/simple
这里我们使用镜像下载会快一点
如果你的mysql是8.0以上版本,请以文本方式打开my.ini配置文件然后加入
[mysqld]
default_authentication_plugin=mysql_native_password
然后修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
原因是因为8.0版本是使用另外的密码加密,所以出现了上述问题
- 首先是连接mysql,和C++类似,
import mysql.connector
mydb = mysql.connector.connect(
host = "localhost",
user = "root",
passwd = "密码"
database = "xiaohu"#可以直接连接数据库,不存在会报错
)
- 创建数据库
mycursor = mydb.cursor()
#mysql指令执行
mycursor.execute("CREATE DATABASE xiaohu")
- 查看数据库
mycursor.execite("SHOW DATABASES")
for i in mycursor:
print(i)
- 创建数据表
mycursor.execute("CREATE TABLE IF NOT EXEISTS 'xiaohu' (name VARCHAR(255), url VARCHAR(255))")
- 查看数据表
mycursor.execute("SHOW TABLES")
for i in mycursor:
print(i)
- 创建主键
#已经有的表添加
mycursor.execute("ALTER TABLE sites ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")
#新表加主键
mycursor.execute("CREATE TABLE xiaohu (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), url VARCHAR(255))")
其他插入操作类似且作用不大,不再赘述。可以用数据库可视化工具
7. 查询数据
mycursor.execute("SELECT * FROM xiaohu")
myresult = mycursor.fetchall() # fetchall() 获取所有记录
myresult = mycursor.fetchone() #获取一条记录
for x in myresult:
print(x)
- 转义查询条件
sql = "SELECT * FROM sites WHERE name = %s"
na = ("RUNOOB", )
mycursor.execute(sql, na)
- 删除数据
sql = "DELETE FROM sites WHERE name = %s"
na = ("stackoverflow", )
mycursor.execute(sql, na)
mydb.commit() # 数据表内容有更新,必须使用到该语句
print(mycursor.rowcount, " 条记录删除")
- 更新数据库
sql = "UPDATE xiaohu SET name = 'ZH' WHERE name = 'Zhihu'"
mycursor.execute(sql)
mydb.commit()
print(mycursor.rowcount, " 条记录被修改")