草庐IT

SQLALCHEMY_TRACK_MODIFICATIONS

全部标签

python - Sqlalchemy 提示外键不存在但实际上它存在

我有以下模型:classLook(Base):__tablename__="looks"id=Column(Integer,primary_key=True)url=Column(String,nullable=False,unique=True)classSimilarity(Base):__tablename__='similarities'__table_args__=(UniqueConstraint('look_id_small','look_id_big'),)id=Column(Integer,primary_key=True)look_id_small=Column(I

python - 如何教 SQLAlchemy 从断开连接中恢复?

根据http://docs.sqlalchemy.org/en/rel_0_9/core/pooling.html#disconnect-handling-pessimistic,如果连接池中的条目不再有效,则可以检测SQLAlchemy以重新连接。我创建了以下测试用例来对此进行测试:importsubprocessfromsqlalchemyimportcreate_engine,eventfromsqlalchemyimportexcfromsqlalchemy.poolimportPool@event.listens_for(Pool,"checkout")defping_con

python - sqlalchemy.pool + psycopg2 超时问题

我有一个Web应用程序超时问题,我怀疑错误出在数据库中。查询运行时间过长。如何增加设置的允许运行时间?我正在通过sqlalchemy和psycopg2使用数据库池。我的数据库是一个Postgres数据库。importpsycopg2importsqlalchemy.poolaspooldefgenerate_conn_string(db_name):db_name=db_name.upper()conn_string="host='{}'port='{}'dbname='{}'user='{}'password='{}'".format(os.environ.get('DB_HOST_

python - 如何在 sqlalchemy 查询中返回相关实体的计数

我是sqlalchemy的新手,虽然文档看起来相当详尽,但我找不到做我想做的事情的方法。假设我有两个表:forum和post。每个论坛都有一个父论坛,以及任意数量的帖子。我想要的是:顶级论坛列表可通过顶级论坛访问的预先加载的子论坛每个child论坛的帖子数所以我开始:query(Forum).filter(Forum.parent==None).all()这给了我所有的顶级论坛。当然,访问子论坛会产生n个选择查询。query(Forum).options(eagerload('children')).filter(Forum.parent==None).all()这解决了n选择问题。现

python - aiohttp+sqlalchemy : Can't reconnect until invalid transaction is rolled back

我正在使用aiohttp和sqlalchemy,并且我创建了一个Singleton,它可以在我需要SQLAlchemy实例时帮助我连接(代码如下).不幸的是,每隔一段时间我就会收到以下错误(我通过重新启动服务器来“解决”):Dec1109:35:29ip-xxx-xxx-xxx-xxxgunicorn[16513]:sqlalchemy.exc.StatementError:(sqlalchemy.exc.InvalidRequestError)Can'treconnectuntilinvalidtransactionisrolledback[SQL:'...\nFROM...\nWH

python - SQLAlchemy 中的 Session 和 db.session 有什么区别?

在事件映射器级别docs它说Session.add()不受支持,但是当我尝试在after_insert事件中执行db.session.add(some_object)时它起作用了,例如:defafter_insert_listener(mapper,connection,user):global_group=Group.query.filter_by(groupname='global').first()a=Association(user,global_group)db.session.add(a)event.listen(User,'after_insert',after_inse

python - 如何查询多对多SQLAlchemy

首先导入Flask和SQLAlchemy模块:fromflaskimportFlaskfromflask_sqlalchemyimportSQLAlchemy声明app和db对象:app=Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///inquestion.db'db=SQLAlchemy(app)共有三个表:Artist、Album和Genre。Artist对象可以链接到多个Albums。Album对象可以链接到多个Artists。albums_to_artists_table是为了保持Artists和A

python - pyodbc.connect() 有效,但 sqlalchemy.create_engine().connect() 无效

我正在尝试编写一个Python脚本,该脚本可以获取Excel工作表并将它们作为表格导入到我的SQLServerExpress(使用Windows身份验证)数据库中。为此,我使用pandas将Excel文件读入pandasDataFrame,然后我希望使用pandas.to_sql()来将数据导入我的数据库。但是,要使用此函数,我需要使用sqlalchemy.create_engine()。我能够单独使用pyodbc连接到我的数据库,并运行测试查询。此连接使用以下代码完成:defcreate_connection(server_name,database_name):config=dic

python - SQLAlchemy 获取查询结果的列数据类型

fromsqlalchemyimportcreate_engine,MetaData,ForeignKeyengine=create_engine("mysql://user:passwd@localhost/shema",echo=False)meta=MetaData(engine,True)conn=engine.connect()tb_list=meta.tables["tb_list"]tb_data=meta.tables["tb_data"]tb_list.c.i_data.append_foreign_key(ForeignKey(tb_data.c.i_id))q=t

python - 声明性表上的 SQLAlchemy 多对多关系

我以声明方式定义了下表(非常简化的版本):classProfile(Base):__tablename__='profile'id=Column(Integer,primary_key=True)name=Column(String(65),nullable=False)def__init__(self,name):self.name=nameclassQuestion(Base):__tablename__='question'id=Column(Integer,primary_key=True)description=Column(String(255),nullable=Fals