Python 为什么没有自动提交功能意味着所有查询都在PostgreSQL中的事务中执行?
从 PostgreSQL没有自动提交功能,这意味着 查询将在事务中执行。 在事务中执行是一件非常好的事情,它确保了数据的安全 完整性,并允许适当的错误处理。但也有 无法从事务中运行的查询。拿 下面的例子Python 为什么没有自动提交功能意味着所有查询都在PostgreSQL中的事务中执行?,python,postgresql,psycopg2,Python,Postgresql,Psycopg2,从 PostgreSQL没有自动提交功能,这意味着 查询将在事务中执行。 在事务中执行是一件非常好的事情,它确保了数据的安全 完整性,并允许适当的错误处理。但也有 无法从事务中运行的查询。拿 下面的例子 #/usr/bin/python2.4 # # import psycopg2 # Try to connect try: conn=psycopg2.connect("dbname='template1' user='dbuser' password='mypass'") exc
#/usr/bin/python2.4
#
#
import psycopg2
# Try to connect
try:
conn=psycopg2.connect("dbname='template1' user='dbuser' password='mypass'")
except:
print "I am unable to connect to the database."
cur = conn.cursor()
try:
cur.execute("""DROP DATABASE foo_test""")
except:
print "I can't drop our test database!"
这段代码实际上会以打印的信息“我不能”而失败
删除我们的测试数据库!PostgreSQL无法删除一个测试数据库中的数据库
事务,它是一个全有或全无命令如果您要删除
数据库您需要更改数据库的隔离级别
这是使用以下方法完成的
conn.set_isolation_level(0)
您可以将上述内容放在DROP数据库的前面
游标执行
我想知道为什么
- “PostgreSQL没有自动提交功能,这意味着所有查询都将在事务中执行。”
- “PostgreSQL无法在事务中删除数据库”
- “如果要删除数据库,则需要更改数据库的隔离级别”
更新:
回答我的问题所有3个都与Python及其DB连接器库相关,而不是与PostgreSQL本身相关:
自动提交
,默认情况下处于活动状态,这意味着每个SQL语句都会立即执行。启动事务块时,此自动提交模式将被禁用,直到完成事务(通过提交或回滚)postgres
)所有3个都与Python及其DB连接器库有关,而不是与PostgreSQL本身有关:
自动提交
,默认情况下处于活动状态,这意味着每个SQL语句都会立即执行。启动事务块时,此自动提交模式将被禁用,直到完成事务(通过提交或回滚)postgres
)谢谢从您描述的内容来看,这三点似乎都只是PostgreSQL的问题,而不是驱动程序Psycopg2。还是我遗漏了什么?谢谢。我对自动提交在postgresql和psycopg2@Tim中的含义感到困惑,我认为你所谓的“问题”只是对事情如何运作的误解。启动事务时,您可以有效地告诉数据库您希望同时执行多个查询
,而不是逐个执行(autocommit
表示逐个执行),谢谢。从您描述的内容来看,这三点似乎都只是PostgreSQL的问题,而不是驱动程序Psycopg2。还是我遗漏了什么?谢谢。我对自动提交在postgresql和psycopg2@Tim中的含义感到困惑,我认为你所谓的“问题”只是对事情如何运作的误解。当您启动一个事务时,您会有效地告诉数据库您希望同时执行多个查询
,而不是逐个执行(autocommit
表示逐个执行
)