首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么with语句可以与sqlite3一起工作,而不能与mysql.connection一起工作?

为什么with语句可以与sqlite3一起工作,而不能与mysql.connection一起工作?
EN

Stack Overflow用户
提问于 2020-04-15 21:37:37
回答 1查看 125关注 0票数 1

当我运行以下代码时:

代码语言:javascript
复制
with sqlite3.connect("example.db") as con:
    c=con.cursor()
    c.execute("CREATE TABLE test (id,name) ")

一切都很好。

但是当我使用mysql.connector

代码语言:javascript
复制
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))")

我得到了这个错误:

代码语言:javascript
复制
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__()-method。因此,它似乎是在sqlite3中实现的,而不是在mysql.connection中实现的。但这是什么原因呢?有没有更深层次的原因,或者Mysql只是没有实现它?

谢谢您:)

EN

回答 1

Stack Overflow用户

发布于 2020-04-15 21:41:26

在SQLite中,列没有类型(默认类型)。在MySQL中,列需要有一个显式类型。添加类型和已解决的问题。

例如,SQL语句可能如下所示:

代码语言:javascript
复制
CREATE TABLE test (id int, name varchar(50))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61230167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档