python中conn是什么

conn是约定俗成的变量名,通常指数据库连接对象(如sqlite3.Connection)或socket连接对象(socket.socket),具体类型取决于上下文;其方法需按对应库规范调用,不可混用。

conn 不是 Python 内置的关键字或函数,而是一个**约定俗成的变量名**,通常代表“connection”(连接),用于存储数据库连接对象或网络套接字连接对象。

conn 多数情况下指数据库连接对象

使用 pymysqlsqlite3psycopg2 等库时,调用 connect() 方法会返回一个连接对象,开发者习惯把它赋值给变量 conn

  • import sqlite3; conn = sqlite3.connect("test.db")
  • import pymysql; conn = pymysql.connect(host="localhost", user="root", password="123", database="demo")

这个 conn 对象提供关键方法:

  • conn.cursor():获取游标,用来执行 SQL
  • conn.commit():提交事务(对 insert/update/delete 生效)
  • conn.rollback():回滚未提交的更改
  • conn.close():关闭连接,释放资源(重要!)

conn 也可能指网络通信中的 socket 连接

在 socket 编程中,server_socket.accept() 返回两个值:connaddr。其中 conn 是一个 客户端 socket 对象,代表与该客户端建立的 TCP 连接:

  • conn.recv(1024):接收客户端发来的数据
  • conn.sendall(b"Hello"):向客户端发送响应
  • conn.close():断开该客户端连接

此时 conn 不是数据库对象,而是可读写的通信通道。

注意:conn 本身没有固定类型,全看你怎么创建它

它的实际类型取决于你用的库和上下文:

  • sqlite3.Connection(SQLite)
  • pymysql.connections.Connection(PyMySQL)
  • socket.socket(标准 socket 库)

所以看到代码里有 conn.execute(...),基本可以判断这是数据库连接;如果是 conn.send(...),那一定是 socket 连接。

常见误区提醒

有人误以为 conn.execute() 是通用写法——其实不是:

  • SQLite 的 Connection 对象 不直接支持 .execute(),必须通过 cursor() 调用
  • PyMySQL 的 Connection 对象也一样,得先 cursor = conn.cursor(),再 cursor.execute(...)
  • 只有少数 ORM 或封装库(如某些自定义工具类)才可能让 conn.execute() 成立