Can';t在python中通过sqlalchemy从postgresql创建表
我试图通过python中的sqlalchemy在postgresql中创建一个表。编码执行时没有返回任何错误,但无法创建表。下面是代码,我非常感谢您的帮助。谢谢大家!Can';t在python中通过sqlalchemy从postgresql创建表,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,我试图通过python中的sqlalchemy在postgresql中创建一个表。编码执行时没有返回任何错误,但无法创建表。下面是代码,我非常感谢您的帮助。谢谢大家! 导入操作系统 从sqlalchemy导入创建引擎 从sqlalchemy.orm导入作用域的_会话,sessionmaker 数据库URL=”postgres://wzmsxnmxhimb....." 引擎=创建引擎(os.getenv(“数据库URL”)) db=作用域_会话(sessionmaker(bind=engine))
导入操作系统
从sqlalchemy导入创建引擎
从sqlalchemy.orm导入作用域的_会话,sessionmaker
数据库URL=”postgres://wzmsxnmxhimb....."
引擎=创建引擎(os.getenv(“数据库URL”))
db=作用域_会话(sessionmaker(bind=engine))
def main():
execute(“创建表簿(id序列主键,isbn整数不为NULL,title VARCHAR不为NULL,author VARCHAR不为NULL,year INTEGER不为NULL)”)
db.commit
打印(“完成”)
如果名称=“\uuuuu main\uuuuuuuu”:
main()
更新
永远不会执行main()
,因为从未满足if语句。尝试更改为:
if __name__ == "__main__":
main()
此外,您的报价使用数据库\u URL
作为字符串,而不是变量,请将此行更改为以下内容:
engine = create_engine(os.getenv(DATABASE_URL))
如果问题仍然存在,请在main()
中添加一个try/except
,以查看结果:
def main():
try:
db.execute("CREATE TABLE books (id SERIAL PRIMARY KEY,isbn INTEGER NOT NULL,title VARCHAR NOT NULL,author VARCHAR NOT NULL,year INTEGER NOT NULL)")
db.commit
print ("done")
except Exception as exc:
print(exc)
由于名称
name
尚未定义,因此执行时不应没有错误。谢谢!再次运行该文件并得到错误:回溯(上次调用):文件“create.py”,第7行,在engine=create_engine(os.getenv(“DATABASE_URL”))文件“C:\Users\green\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7qbz5n2kfra8p0\LocalCache\Local Packages\Python37\site Packages\sqlalchemy\engine_init.py”,第479行,在create_engine return strategy.create(*args,**kwargs)下半部分文件“C:\Users\green\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\Local Packages\Python37\site Packages\sqlalchemy\engine\strategies.py”中,第56行,在create plugins=u.实例化_plugins(kwargs)AttributeError:“非类型”对象没有属性“\u实例化\u插件”我使用设置数据库\u URL=postgres://wzm... 在命令提示符下,将数据库URL作为字符串部分删除到.py中,然后再次运行.py。像以前一样,所有操作都会执行并返回“完成”,但没有创建任何表。@Cheryl添加try/except以查看数据库返回的结果,如上图所示。尝试上面的代码,它将返回“完成”。这是否意味着与db的连接已成功建立?