我试图用postgressql的pg 8000驱动程序创建一个数据库,但无法创建。手动创建一个数据库,然后连接到它对我来说很好,但我需要用我的代码创建数据库。我得到错误“sqlalchemy.exc.ProgrammingError:(pg8000.ProgrammingError)"。我已经尝试了下面的代码来创建数据库。
from sqlalchemy import create_engine
dburl = "postgresql+pg8000://user:pswd@myip:5432/postgres/"
engine = create_engine(dburl)
conn = engine.connect()
conn.execute("COMMIT")
conn.execute("CREATE DATABASE qux")
我也试着在下面--
from sqlalchemy import create_engine
from sqlalchemy.engine import url
settings ={"drivername" : "postgresql+pg8000", "host" : "myip","port" : 5432,"username" : "user","password" : "pswd","database" : "MyTestDB"}
db=create_engine(url.URL(**settings))
db.execute("commit")
这是确切的错误,我得到“"“sqlalchemy.exc.编程错误:(pg8000.ProgrammingError)('ERROR ',' 25001','CREATE DATABASE cannot run inside a transaction block')[SQL:'create database workDB']"""”
请建议我如何创建这个DB...
1条答案
按热度按时间zvms9eto1#
这里有一个解决方案:
文档讨论了执行不能在事务中运行的命令的问题。(),如果没有正在进行的事务。这是很好的,直到你来执行一个命令,不能在事务内执行。在这种情况下,你必须进入自动提交模式,它隐式地在语句之前启动一个事务,然后提交它,但是如果(像CREATE DATABASE一样)语句不能在事务中执行,它会自动避免这样做。