数据库路径作为sqlalchemy的变量的引擎
我尝试通过使用和给出变量的路径来创建数据库。通过某些回旋,代码不起作用。当我使用字符串时,它有效。是否可以将变量传递到发动机功能中?
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Date, ForeignKey
file_settings = open('html\\settings.ini', 'r')
lines = file_settings.readlines()
url = lines[0]
engine = create_engine(url, echo=False)
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base()
这是我收到的错误消息,当我尝试使用变量而不是用于数据库URL的简单字符串:
Traceback (most recent call last): File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3250, in _wrap_pool_connect
return fn() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 310, in connect
return _ConnectionFairy._checkout(self) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 868, in _checkout
fairy = _ConnectionRecord.checkout(pool) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 476, in checkout
rec = pool._do_get() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\impl.py", line 256, in _do_get
return self._create_connection() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 256, in _create_connection
return _ConnectionRecord(self) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 371, in __init__
self.__connect() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 665, in __connect
with util.safe_reraise(): File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\util\langhelpers.py", line 70, in __exit__
compat.raise_( File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
raise exception File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 661, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\create.py", line 590, in connect
return dialect.connect(*cargs, **cparams) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\default.py", line 597, in connect
return self.dbapi.connect(*cargs, **cparams) sqlite3.OperationalError: unable to open database file
The above exception was the direct cause of the following exception:
Traceback (most recent call last): File "C:\prog\Python\Eel\Eel Tasks\app.py", line 275, in <module>
Base.metadata.create_all(engine) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\sql\schema.py", line 4785, in create_all
bind._run_ddl_visitor( File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3116, in _run_ddl_visitor
with self.begin() as conn: File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3032, in begin
conn = self.connect(close_with_result=close_with_result) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3204, in connect
return self._connection_cls(self, close_with_result=close_with_result) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 96, in __init__
else engine.raw_connection() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3283, in raw_connection
return self._wrap_pool_connect(self.pool.connect, _connection) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3253, in _wrap_pool_connect
Connection._handle_dbapi_exception_noconnection( File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 2100, in _handle_dbapi_exception_noconnection
util.raise_( File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
raise exception File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3250, in _wrap_pool_connect
return fn() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 310, in connect
return _ConnectionFairy._checkout(self) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 868, in _checkout
fairy = _ConnectionRecord.checkout(pool) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 476, in checkout
rec = pool._do_get() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\impl.py", line 256, in _do_get
return self._create_connection() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 256, in _create_connection
return _ConnectionRecord(self) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 371, in __init__
self.__connect() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 665, in __connect
with util.safe_reraise(): File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\util\langhelpers.py", line 70, in __exit__
compat.raise_( File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
raise exception File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 661, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\create.py", line 590, in connect
return dialect.connect(*cargs, **cparams) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\default.py", line 597, in connect
return self.dbapi.connect(*cargs, **cparams) sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file (Background on this error at: https://sqlalche.me/e/14/e3q8)
I try to create my database by using and giving the path with a variable. By some reson the code does not work. It works, when I use string. Is it possible to pass variable into the engine function?
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Date, ForeignKey
file_settings = open('html\\settings.ini', 'r')
lines = file_settings.readlines()
url = lines[0]
engine = create_engine(url, echo=False)
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base()
This is the Error message that I got, when I try to use variable instead of simple string for the database URL:
Traceback (most recent call last): File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3250, in _wrap_pool_connect
return fn() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 310, in connect
return _ConnectionFairy._checkout(self) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 868, in _checkout
fairy = _ConnectionRecord.checkout(pool) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 476, in checkout
rec = pool._do_get() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\impl.py", line 256, in _do_get
return self._create_connection() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 256, in _create_connection
return _ConnectionRecord(self) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 371, in __init__
self.__connect() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 665, in __connect
with util.safe_reraise(): File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\util\langhelpers.py", line 70, in __exit__
compat.raise_( File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
raise exception File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 661, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\create.py", line 590, in connect
return dialect.connect(*cargs, **cparams) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\default.py", line 597, in connect
return self.dbapi.connect(*cargs, **cparams) sqlite3.OperationalError: unable to open database file
The above exception was the direct cause of the following exception:
Traceback (most recent call last): File "C:\prog\Python\Eel\Eel Tasks\app.py", line 275, in <module>
Base.metadata.create_all(engine) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\sql\schema.py", line 4785, in create_all
bind._run_ddl_visitor( File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3116, in _run_ddl_visitor
with self.begin() as conn: File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3032, in begin
conn = self.connect(close_with_result=close_with_result) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3204, in connect
return self._connection_cls(self, close_with_result=close_with_result) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 96, in __init__
else engine.raw_connection() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3283, in raw_connection
return self._wrap_pool_connect(self.pool.connect, _connection) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3253, in _wrap_pool_connect
Connection._handle_dbapi_exception_noconnection( File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 2100, in _handle_dbapi_exception_noconnection
util.raise_( File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
raise exception File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\base.py", line 3250, in _wrap_pool_connect
return fn() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 310, in connect
return _ConnectionFairy._checkout(self) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 868, in _checkout
fairy = _ConnectionRecord.checkout(pool) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 476, in checkout
rec = pool._do_get() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\impl.py", line 256, in _do_get
return self._create_connection() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 256, in _create_connection
return _ConnectionRecord(self) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 371, in __init__
self.__connect() File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 665, in __connect
with util.safe_reraise(): File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\util\langhelpers.py", line 70, in __exit__
compat.raise_( File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
raise exception File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\pool\base.py", line 661, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\create.py", line 590, in connect
return dialect.connect(*cargs, **cparams) File "C:\Users\An\AppData\Local\Programs\Python\Python310\lib\site-packages\sqlalchemy\engine\default.py", line 597, in connect
return self.dbapi.connect(*cargs, **cparams) sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file (Background on this error at: https://sqlalche.me/e/14/e3q8)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论