我试图通过python中的sqlalchemy在postgresql中创建一个表。编码执行时不会返回任何错误,但无法创建表。下面是代码,我真的很感激你的帮助。非常感谢。
import os
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
DATABASE_URL = "postgres://wzmsxnmxhimb....."
engine = create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))
def main():
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")
if __name__ == "__main__":
main()
更新
您的main()
从未被执行,因为您的if语句从未被满足。尝试更改为:
if __name__ == "__main__":
main()
如果您的报价使用DATABASE_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)