我正在使用MySQLdb模块从python使用MySQL 5.0.
考虑一个简单的函数来加载和返回整个数据库表的内容:
def load_items(connection):
cursor = connection.cursor()
cursor.execute("SELECT * FROM MyTable")
return cursor.fetchall()
Run Code Online (Sandbox Code Playgroud)
此查询旨在成为一个简单的数据加载,并且除了该单个SELECT语句之外没有任何事务行为.
在运行此查询之后,可能需要一段时间再次使用相同的连接来执行其他任务,尽管其他连接仍然可以同时在数据库上运行.
我应该在通话connection.commit()后尽快cursor.execute(...)打电话,以确保操作未在连接上留下未完成的交易吗?
我正在使用MySQL 5.0服务器.我的要求是在具有自动增量主键的现有表中添加一个特殊行.
如果我们能够将该行的id设为0(因为它易于记忆并且易于在手动观察中发现),这对于项目的未来维护和管理将非常有用.
现在,我知道MySQL对自动增量列使用自己的值没有问题,我的测试表明我可以使用UPDATE查询将行的自动增量主键设置为0.但是,已经提出了一些关于如何在将来的INSERT中影响列的自动递增功能的问题.
我的(有限的)实验表明没有什么奇怪的,我在MySQL文档中找不到任何针对此的具体警告.也就是说,除此之外(强调我的):http://dev.mysql.com/doc/refman/5.0/en/create-table.html
每个表只能有一个AUTO_INCREMENT列,必须将其编入索引,并且不能具有DEFAULT值.仅当AUTO_INCREMENT列仅包含正值时,它才能正常工作.插入负数被视为插入一个非常大的正数.这样做是为了避免数字从正到负"包裹"时的精度问题,并确保您不会意外地获得包含0的AUTO_INCREMENT列.
我无法找到AUTO_INCREMENT列中值为零的错误解释,所以有人可以告诉我,如果包含0的AUTO_INCREMENT列是坏事吗?