在Python中,使用第三方库:pymysql 来完成对MySQL数据库的操作。
1 pymysql安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pymysql
结果如下:
2 代码实例
2.1 创建到MySQL的数据库链接
from pymysql import Connection
#获取到Mysql数据库的链接对象
conn = Connection(
host = '192.168.222.156', # 主机名(或IP地址)
port = 3306, # 端口,默认3306
user = 'root', # 账户名
password = '123456' # 密码
)
# 打印Mysql数据库软件信息
print(conn.get_server_info())
#关闭到数据库的链接
conn.close()
结果如下:
2.2 执行语句
(1)执行非查询语句
from pymysql import Connection
#获取到Mysql数据库的链接对象
conn = Connection(
host = '192.168.222.156', # 主机名(或IP地址)
port = 3306, # 端口,默认3306
user = 'root', # 账户名
password = '123456' # 密码
)
#获取游标对象
cursor = conn.cursor()
# 选择数据库
conn.select_db("db1")
# 使用游标对象,执行sql语句
cursor.execute("CREATE TABLE test_pymysql(id INT, info VARCHAR(255))")
#关闭到数据库的链接
conn.close()
结果如下:
(2)执行查询语句
from pymysql import Connection
#获取到Mysql数据库的链接对象
conn = Connection(
host = '192.168.222.156', # 主机名(或IP地址)
port = 3306, # 端口,默认3306
user = 'root', # 账户名
password = '123456' # 密码
)
#获取游标对象
cursor = conn.cursor()
conn.select_db("finebi_shop")
# 使用游标对象,执行sql语句
cursor.execute("select * from finebi_areas")
result: tuple = cursor.fetchall()
for r in result:
print(r)
#关闭到数据库的链接
conn.close()
结果如下:
游标对象使用fetchall()方法,得到的是全部的查询结果,是一个元组
这个元组内部嵌套了元组,嵌套的元组就是一行查询结果
(3)执行插入语句
pymysql在执行数据插入或其它产生数据更改的SQL语句时,默认是需要提交更改的,即,需要通过代码“确认”这种更改行为。
通过链接对象.commit() 即可确认此行为。
from pymysql import Connection
#获取到Mysql数据库的链接对象
conn = Connection(
host = '192.168.222.156', # 主机名(或IP地址)
port = 3306, # 端口,默认3306
user = 'root', # 账户名
password = '123456' # 密码
)
#获取游标对象
cursor = conn.cursor()
conn.select_db("db1")
# 使用游标对象,执行sql语句
cursor.execute("insert into test_pymysql values(1, '插入数据')")
# # 通过commit确认
conn.commit();
#关闭到数据库的链接
conn.close()
插入结果如下:
如果不想手动commit确认,可以在构建链接对象的时候,设置自动commit的属性。
from pymysql import Connection
#获取到Mysql数据库的链接对象
conn = Connection(
host = '192.168.222.156', # 主机名(或IP地址)
port = 3306, # 端口,默认3306
user = 'root', # 账户名
password = '123456',# 密码
autocommit = True
)
#获取游标对象
cursor = conn.cursor()
conn.select_db("db1")
# 使用游标对象,执行sql语句
cursor.execute("insert into test_pymysql values(2, '插入数据')")
# # 通过commit确认
# conn.commit();
#关闭到数据库的链接
conn.close()
结果如下: