【发布时间】:2020-07-28 12:11:00
【问题描述】:
当我运行以下代码时:
with sqlite3.connect("example.db") as con:
c=con.cursor()
c.execute("CREATE TABLE test (id,name) ")
一切正常。
但是当我使用mysql.connector:
import mysql.connector as mariadb
with mariadb.connect(user='root', password='root', database='publications') as con:
c = con.cursor()
c.execute("CREATE TABLE test (id INT,name VARCHAR(45))")
我收到此错误:
File "<...>", line 4, in <module>
with mariadb.connect(user='root', password='root', database='publications') as con:
AttributeError: __enter__
谁能告诉我这是什么原因?正如我在"PEP 343 -- The "with" Statement" 中读到的,要使用带有with 语句的对象,您需要实现__enter__() 和__exit__() 方法。所以它似乎是在sqlite3 中实现的,但不是在mysql.connection 中实现的。但这是什么原因呢?是否有更深层次的原因或Mysql 只是没有实现它?
谢谢你:)
【问题讨论】:
-
在 MySQL/MariaDB 中指定列数据类型是强制性的。
-
如果我没记错的话,
WITH是在 MySQL 8 中添加的。这是你的吗?
标签: python mysql sqlite with-statement