PyMySQL补充及内容优化
首先在本地创建了 an 库, login_user 表, 里面 字段为 username password, 数据为 (admin 123456) (waite 123456)
连接配置
# 数据库连接,主机host、端口port、用户名user、密码passwd、数据库表database
con = pymysql.connect(host='localhost', port=3306, user='root', passwd='An',
database='an')#如果汉字显示不出来就加入charset=‘utf-8'
TIPS: 生成游标是必须的,不然无法进行接下面的操作。
import pymysql
# 数据库连接,主机host、端口port、用户名user、密码passwd、数据库表database
con = pymysql.connect(host='localhost', port=3306, user='root', passwd='jiang',
database='an')#如果汉字显示不出来就加入charset=‘utf-8'
# h获取一个游标对象
cursor = con.cursor()
# 执行一条SQL语句
cursor.execute("select version()")
# 获取一行数据
data = cursor.fetchone()
print(data)
# 关闭数据库连接,记得关闭游标,后续可以不写
con.close()
"""
('5.7.26-log',)
"""
写入并查询数据
import pymysql
# 数据库连接,主机host、端口port、用户名user、密码passwd、数据库表database
con = pymysql.connect(host='localhost', port=3306, user='root', passwd='jiang',
database='an')#如果汉字显示不出来就加入charset=‘utf-8'
# h获取一个游标对象
cursor = con.cursor()
# 执行一条插入SQL语句
sql = 'INSERT INTO login_user(username,password) VALUE ("anan",123456); '
cursor.execute(sql)
# 执行一条查询语句
sql1 = "select * from login_user;"
cursor.execute(sql1)
# 获取一行数据
data = cursor.fetchall()
print(data)
# 关闭数据库连接
con.close()
"""
(('admin', '123456'), ('waite', '123456'), ('anan', '123456'))
"""
一次写入多条语句
sql = "INSERT INTO login_user(username,password) VALUES (%s,%s);"
list_name = [('QA',123456),('shier',123456),('ershi',123456)]
cur.executemany(sql, list_name)
获取数据
data = cur.fetchone()
# 获取查询结果,获取全部数据,如果已经使用fetchone取了第一条的数据,游标会自动向下取值
data_ = cur.fetchall()
# 下标获取查询结果,获取第一条数据,可以更改数字来获取值
data_1 = cur.fetchmany(1)
提交数据
import pymysql
# 数据库连接,主机host、端口port、用户名user、密码passwd、数据库表database
con = pymysql.connect(host='localhost', port=3306, user='root', passwd='jiang',
database='an')#如果汉字显示不出来就加入charset=‘utf-8'
# h获取一个游标对象
cursor = con.cursor()
# 执行一条SQL语句
sql = 'INSERT INTO login_user(username,password) VALUE ("anan",123456); '
cursor.execute(sql)
# 提交数据库
con.commit()
sql = "select * from login_user;"
cursor.execute(sql)
# 获取一行数据
data = cursor.fetchall()
print(data)
# 关闭数据库连接
con.close()
在上述过程中,提交数据后前面的数据会被覆盖掉,原因就是没有提交到数据库。
回滚
import pymysql
# 数据库连接,主机host、端口port、用户名user、密码passwd、数据库表database
con = pymysql.connect(host='localhost', port=3306, user='root', passwd='jiang',
database='an')#如果汉字显示不出来就加入charset=‘utf-8'
# h获取一个游标对象
cursor = con.cursor()
# 执行一条SQL语句
sql = 'INSERT INTO login_user(username,password) VALUE ("anan",123456); '
try:
cursor.execute(sql)
# 提交数据库
con.commit()
except:
# 发生错误时回滚
con.rollback()
# 关闭数据库连接
con.close()
with
使用with语法python会自动释放资源
import pymysql
con = pymysql.connect(host='localhost', port=3306, user='root', passwd='jiang',
database='an')
with con:
cur = con.cursor()
cur.execute("select *from login_user;")
data = cur.fetchall()
print(data)
字典游标
import pymysql
import pymysql.cursors
con = pymysql.connect(host='localhost', port=3306, user='root', passwd='jiang',
database='an',cursorclass=pymysql.cursors.DictCursor)
with con:
cur = con.cursor()
cur.execute("select *from login_user;")
data = cur.fetchall()
for da in data:
print(da['username'],da['password'])
"""
admin 123456
waite 123456
shier 123456
anan 123456
"""
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Waite
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果