我只是想开始使用sqlalchemy。无论出于什么原因,我什么都做不了。
我安装了sqlalchemy,仅导入即可。我试图开始遵循此站点上的代码:
https://www.pythoncentral.io/introductory-tutorial-python-sqlalchemy/
代码如下:
import os
import sys
from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from sqlalchemy import create_engine
Base = declarative_base()
class Person(Base):
__tablename__ = 'person'
# Here we define columns for the table person
# Notice that each column is also a normal Python instance attribute.
id = Column(Integer, primary_key=True)
name = Column(String(250), nullable=False)
class Address(Base):
__tablename__ = 'address'
# Here we define columns for the table address.
# Notice that each column is also a normal Python instance attribute.
id = Column(Integer, primary_key=True)
street_name = Column(String(250))
street_number = Column(String(250))
post_code = Column(String(250), nullable=False)
person_id = Column(Integer, ForeignKey('person.id'))
person = relationship(Person)
# Create an engine that stores data in the local directory's
# sqlalchemy_example.db file.
engine = create_engine('sqlite:///sqlalchemy_example.db')
# Create all tables in the engine. This is equivalent to "Create Table"
# statements in raw SQL.
Base.metadata.create_all(engine)
我复制并粘贴了代码以创建表,但出现以下错误
sqlalchemy.exc.OperationalError:(sqlite3.OperationalError)无法 打开数据库文件(有关此错误的背景,位于: http://sqlalche.me/e/e3q8)
我去了http://sqlalche.me/e/e3q8,似乎相信将pool_pre_ping = True添加到引擎将有助于解决问题。它提到了一个连接问题,但是由于它只是创建sqlite数据库,所以并没有真正理解该怎么做。
对于如何解决此问题的任何建议,我将非常感谢。
编辑:我在问题中输入了特定的代码。
我也尝试在pythonanywhere中执行代码,它按预期工作。任何有关我的机器可能出问题的指导都将不胜感激。
答案 0 :(得分:0)
因此,无论出于何种原因,我都需要指定数据库所需的绝对路径。我将引擎更新为:
sqlite:/// C:\ user \ file_path \ test.db
这允许它创建数据库。但是,我真的更喜欢只在当前目录中创建数据库。如果有人知道我需要做些什么来使它正常工作,那就太好了。