<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lea-linux.org/docs/index.php?action=history&amp;feed=atom&amp;title=Snippet%2FPython%2FSQLAlchemy</id>
	<title>Snippet/Python/SQLAlchemy - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://lea-linux.org/docs/index.php?action=history&amp;feed=atom&amp;title=Snippet%2FPython%2FSQLAlchemy"/>
	<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Snippet/Python/SQLAlchemy&amp;action=history"/>
	<updated>2026-05-30T02:17:09Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Snippet/Python/SQLAlchemy&amp;diff=41498&amp;oldid=prev</id>
		<title>Lea : Page créée avec « == Python et SQL Alchemy ==   === Lecture ligne par ligne (yield méthode) avec l&#039;utilisation d&#039;un SCHEMA dans le nom de la table ===  &lt;b&gt;Note&lt;/b&gt;:  Code pas optimisé.  R... »</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Snippet/Python/SQLAlchemy&amp;diff=41498&amp;oldid=prev"/>
		<updated>2017-11-29T16:37:21Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « == Python et SQL Alchemy ==   === Lecture ligne par ligne (yield méthode) avec l&amp;#039;utilisation d&amp;#039;un SCHEMA dans le nom de la table ===  &amp;lt;b&amp;gt;Note&amp;lt;/b&amp;gt;:  Code pas optimisé.  R... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Python et SQL Alchemy ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lecture ligne par ligne (yield méthode) avec l&amp;#039;utilisation d&amp;#039;un SCHEMA dans le nom de la table ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note&amp;lt;/b&amp;gt;: &lt;br /&gt;
Code pas optimisé. &lt;br /&gt;
Refactoring nécessaire.&lt;br /&gt;
&lt;br /&gt;
Quand on souhaite faire une sélection dans une table, il existe plusieurs méthodes avec SQL Alchemy. La plus simple étant de faire un bête execute. Cependant, si on a beaucoup de données dans la table, vous aurez un joli timeout. Pour cela, on va utiliser le combo &amp;quot;Session&amp;quot; et &amp;quot;Query&amp;quot; avec yield_per.&lt;br /&gt;
&lt;br /&gt;
Pour ajouter de la complexité, notre table se trouve dans un SCHEMA appelé &amp;quot;my_schema&amp;quot;. Quand vous faites une requête dedans, vous devez faire &amp;quot;SELECT * FROM my_schema.user&amp;quot;: Avec SQLAlchemy, c&amp;#039;est un peu plus complexe, on doit modifier __table_args__ pour ajouter le nom du schema. Sans cela, SQLAlchemy va construire une requête complètement farfelue. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;import sqlalchemy&lt;br /&gt;
from sqlalchemy.orm import sessionmaker&lt;br /&gt;
from sqlalchemy.ext.declarative import declarative_base&lt;br /&gt;
from sqlalchemy import Column, String, Integer, ForeignKey&lt;br /&gt;
&lt;br /&gt;
config = {&lt;br /&gt;
    &amp;#039;endpoint&amp;#039;: &amp;#039;127.0.0.1:5432&amp;#039;,&lt;br /&gt;
    &amp;#039;user&amp;#039;: &amp;#039;mon_user&amp;#039;,&lt;br /&gt;
    &amp;#039;pwd&amp;#039; : &amp;#039;mon_password&amp;#039;,&lt;br /&gt;
    &amp;#039;name&amp;#039;: &amp;#039;ma_database&amp;#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class User(declarative_base()):&lt;br /&gt;
    __tablename__ = &amp;#039;user&amp;#039;&lt;br /&gt;
    __table_args__ = {&amp;#039;schema&amp;#039; : &amp;#039;my_schema&amp;#039;}&lt;br /&gt;
    uuid = Column(String, primary_key=True, key=&amp;#039;uuid&amp;#039;)&lt;br /&gt;
    name = Column(String, key=&amp;#039;name&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
url = &amp;#039;postgresql://{user}:{pwd}@{endpoint}/{name}&amp;#039;.format(**config)&lt;br /&gt;
database_engine = sqlalchemy.create_engine(url, client_encoding=&amp;#039;utf8&amp;#039;, echo=False)&lt;br /&gt;
database_con = database_engine.connect()&lt;br /&gt;
database_meta = sqlalchemy.MetaData(bind=database_con)&lt;br /&gt;
&lt;br /&gt;
session = sessionmaker()&lt;br /&gt;
session.configure(bind=database_engine)&lt;br /&gt;
for user in session().query(User).yield_per(100):&lt;br /&gt;
    print(user)&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lea</name></author>
	</entry>
</feed>