Python数据库连接以及游标关闭问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python数据库连接以及游标关闭问题相关的知识,希望对你有一定的参考价值。
各位大神:
小弟初学Python,写了几行代码,连接一个数据库,执行完SQL后关闭游标及数据库,然后用print输出数据库连接和游标,显示如下:
<pymysql.cursors.Cursor object at 0x0000002F8626A128>
<pymysql.connections.Connection object at 0x0000002F8434CAC8>
这意味着数据库连接和游标没有关闭吧?
怎么解决?
部分自定义函数如下:
。。。。
def mysql_close_cursor(cursor):
cursor.close()
def mysql_close_con(con):
con.close()
。。。。
部分程序代码(调用自定义函数)如下:
.。。。。
sql=mysql_get_sql()
results=mysql_set_sql(con,cursor,sql)
mysql_print_results(results)
mysql_close_cursor(cursor)
mysql_close_con(con)
print(cursor)
print(con)
。。。。。
求大神帮忙看看!
谢谢!
host:MySQL服务器名
user:数据库使用者
password:用户登录密码
db:操作的数据库名
charset:使用的字符集(一般是gb2312)
cursor = db.cursor() 其实就是用来获得python执行Mysql命令的方法,也就是
我们所说的操作游标
下面cursor.execute则是真正执行MySQL语句,即查询TABLE_PARAMS表的数据。
至于fetchall()则是接收全部的返回结果行 row就是在python中定义的一个变量,用来接收返回结果行的每行数据。同样后面的r也是一个变量,用来接收row中的每个字符,如果写成C的形式就更好理解了
for(string row = ''; row<= cursor.fetchall(): row++)
for(char r = ''; r<= row; r++)
printf("%c", r);追问
我用的是第三方库pymysql。你讲的不错很详细,但不是我想要问的。Python连接MySQL数据库并执行sql语句我到会。我想问的是出现那种结果的情况下,游标和数据库链接到底关闭了么,如果没有怎么解决。
Python学习第五篇:操作MySQL数据库
Python学习第五篇:操作MySQL数据库
活动地址:CSDN21天学习挑战赛
python 操作MySQL数据库,要先安装第三方库pymysql
命令行
pip install pymysql
或
pycharm 里的setting 设置里添加库
——
操作数据库基本流程
- 与数据库创建连接
- 获取游标
- 通过游标执行sql语句
- 关闭游标
- 关闭数据库连接
创建连接对象
conn = pymysql.connect(host='localhost',port=3306,user='root',password='root',database='stu')
pymysql.connect() 的可用参数:
host
:mysql 的地址,本地为 localhost 或127.0.0.1
port
:连接mysql 的端口,默认3306
database
:数据库名称
user
:连接用户名
password
:连接的密码
charset
: 通信采用的编码方式,推荐使用utf8
——
获取游标对象
要执行数据库的增删改查语句需要通过游标对象
cur = conn.cursor()
cursor() 的参数说明:
execute( operation [parameters])
:使用游标执行SQL语句,返回受影响的行数,主要用于执行insert、update、delete、select等语句,也可以执行create、alter、drop等语句
cur.fetchone()
: 获取查询结果集中的一条数据,返回一个元组,如(1,张三)
cur.fetchall()
: 获取查询结果集中的所有数据,返回一个元组,如((1,张三),(2,'李四"))
cur.close()
: 关闭游标,表示和数据库操作完成
——
操作数据库测试:
import pymysql
conn = pymysql.connect(host='localhost',port=3306,user='root',password='root',database='stu')
cursor = conn.cursor()
cursor.execute("select * from student;")
row = cursor.fetchone()
print(row)
cursor.close()
conn.close()
得到sql 语句 "select * from student;"
的执行结果为 ('201215121', '李勇', '男', 18, '计算机系')
即查 student 表中的所有数据。
这里是用了 cur.fetchone()
, 只能获取查询结果集中的一条数据
要获取多条数据, 用fetchall()
,获取查询结果集中的所有数据
import pymysql
conn = pymysql.connect(host='localhost',port=3306,user='root',password='root',database='stu')
cursor = conn.cursor()
cursor.execute("select * from student;")
row = cursor.fetchall()
print(row)
cursor.close()
conn.close()
得到查询结果:(('201215121', '李勇', '男', 18, '计算机系'), ('201215122', '刘晨', '女', 19, '计算机系'))
是一个元组,元组里有两个元组
——
所以用python存在数据库,根据这个模板即可,只需在 execute() 中填写想要执行的sql语句,对数据库进行增删改查等操作。
import pymysql
conn = pymysql.connect(host='localhost',port=3306,user='root',password='root',database='stu')
cursor = conn.cursor()
cursor.execute("sql语句")
row = cursor.fetchall()
print(row)
cursor.close()
conn.close()
以上是关于Python数据库连接以及游标关闭问题的主要内容,如果未能解决你的问题,请参考以下文章