sqlobject-discuss Mailing List for SQLObject
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
You can subscribe to this list here.
2003 |
Jan
|
Feb
(2) |
Mar
(43) |
Apr
(204) |
May
(208) |
Jun
(102) |
Jul
(113) |
Aug
(63) |
Sep
(88) |
Oct
(85) |
Nov
(95) |
Dec
(62) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(38) |
Feb
(93) |
Mar
(125) |
Apr
(89) |
May
(66) |
Jun
(65) |
Jul
(53) |
Aug
(65) |
Sep
(79) |
Oct
(60) |
Nov
(171) |
Dec
(176) |
2005 |
Jan
(264) |
Feb
(260) |
Mar
(145) |
Apr
(153) |
May
(192) |
Jun
(166) |
Jul
(265) |
Aug
(340) |
Sep
(300) |
Oct
(469) |
Nov
(316) |
Dec
(235) |
2006 |
Jan
(236) |
Feb
(156) |
Mar
(229) |
Apr
(221) |
May
(257) |
Jun
(161) |
Jul
(97) |
Aug
(169) |
Sep
(159) |
Oct
(400) |
Nov
(136) |
Dec
(134) |
2007 |
Jan
(152) |
Feb
(101) |
Mar
(115) |
Apr
(120) |
May
(129) |
Jun
(82) |
Jul
(118) |
Aug
(82) |
Sep
(30) |
Oct
(101) |
Nov
(137) |
Dec
(53) |
2008 |
Jan
(83) |
Feb
(139) |
Mar
(55) |
Apr
(69) |
May
(82) |
Jun
(31) |
Jul
(66) |
Aug
(30) |
Sep
(21) |
Oct
(37) |
Nov
(41) |
Dec
(65) |
2009 |
Jan
(69) |
Feb
(46) |
Mar
(22) |
Apr
(20) |
May
(39) |
Jun
(30) |
Jul
(36) |
Aug
(58) |
Sep
(38) |
Oct
(20) |
Nov
(10) |
Dec
(11) |
2010 |
Jan
(24) |
Feb
(63) |
Mar
(22) |
Apr
(72) |
May
(8) |
Jun
(13) |
Jul
(35) |
Aug
(23) |
Sep
(12) |
Oct
(26) |
Nov
(11) |
Dec
(30) |
2011 |
Jan
(15) |
Feb
(44) |
Mar
(36) |
Apr
(26) |
May
(27) |
Jun
(10) |
Jul
(28) |
Aug
(12) |
Sep
|
Oct
|
Nov
(17) |
Dec
(16) |
2012 |
Jan
(12) |
Feb
(31) |
Mar
(23) |
Apr
(14) |
May
(10) |
Jun
(26) |
Jul
|
Aug
(2) |
Sep
(2) |
Oct
(1) |
Nov
|
Dec
(6) |
2013 |
Jan
(4) |
Feb
(5) |
Mar
|
Apr
(4) |
May
(13) |
Jun
(7) |
Jul
(5) |
Aug
(15) |
Sep
(25) |
Oct
(18) |
Nov
(7) |
Dec
(3) |
2014 |
Jan
(1) |
Feb
(5) |
Mar
|
Apr
(3) |
May
(3) |
Jun
(2) |
Jul
(4) |
Aug
(5) |
Sep
|
Oct
(11) |
Nov
|
Dec
(62) |
2015 |
Jan
(8) |
Feb
(3) |
Mar
(15) |
Apr
|
May
|
Jun
(6) |
Jul
|
Aug
(6) |
Sep
|
Oct
|
Nov
|
Dec
(19) |
2016 |
Jan
(2) |
Feb
|
Mar
(2) |
Apr
(4) |
May
(3) |
Jun
(7) |
Jul
(14) |
Aug
(13) |
Sep
(6) |
Oct
(2) |
Nov
(3) |
Dec
|
2017 |
Jan
(6) |
Feb
(14) |
Mar
(2) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(4) |
Nov
(3) |
Dec
|
2018 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2019 |
Jan
|
Feb
(1) |
Mar
|
Apr
(44) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
(1) |
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
(1) |
2021 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
(1) |
2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(1) |
Nov
(2) |
Dec
|
2024 |
Jan
|
Feb
|
Mar
|
Apr
(4) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2025 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Oleg B. <ph...@ph...> - 2025-03-07 14:01:43
|
Hello! I'm pleased to announce version 3.13.0, the first release of branch 3.13 of SQLObject. What's new in SQLObject ======================= Drivers ------- * Extended default list of MySQL drivers to ``mysqldb``, ``mysqlclient``, ``mysql-connector``, ``mysql-connector-python``, ``pymysql``. * Extended default list of PostgreSQL drivers to ``psycopg``, ``psycopg2``, ``pygresql``, ``pg8000``. * Fixed outstanding problems with ``psycopg``. It's now the first class driver. * Fixed all problems with ``pg8000``. It's now the first class driver. * Dropped support for ``CyMySQL``; its author refused to fix unicode-related problems. * Dropped support for ``py-postgresql``; it's completely broken with debianized ``Postgres`` and the authors reject fixes. Tests ----- * Added tests for ``mysqldb`` (aka ``mysql-python``) and ``mysqlclient`` on w32. * Improved tests of ``mysql-connector`` and ``mysql-connector-python``. CI -- * Tests(GHActions): Fixed old bugs in the workflow on w32. * Run tests with ``psycopg[c]``. For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is a free and open-source (LGPL) Python object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL/MariaDB (with a number of DB API drivers: ``MySQLdb``, ``mysqlclient``, ``mysql-connector``, ``PyMySQL``, ``mariadb``), PostgreSQL (``psycopg``, ``psycopg2``, ``PyGreSQL``, partially ``pg8000``), SQLite (builtin ``sqlite3``); connections to other backends - Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB) - are less debugged). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Download: https://pypi.org/project/SQLObject/3.13.0 News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Mailing lists: https://sourceforge.net/p/sqlobject/mailman/ Development: http://sqlobject.org/devel/ Developer Guide: http://sqlobject.org/DeveloperGuide.html Example ======= Install:: $ pip install sqlobject Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2025-02-01 20:04:32
|
Hello! I'm pleased to announce version 3.12.0.post2, the second post-release of release 3.12.0 of branch 3.12 of SQLObject. What's new in SQLObject ======================= Installation/dependencies ------------------------- * Use ``FormEncode`` 2.1.1 for Python 3.13. For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is a free and open-source (LGPL) Python object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL/MariaDB (with a number of DB API drivers: ``MySQLdb``, ``mysqlclient``, ``mysql-connector``, ``PyMySQL``, ``mariadb``), PostgreSQL (``psycopg2``, ``PyGreSQL``, partially ``pg8000`` and ``py-postgresql``), SQLite (builtin ``sqlite3``); connections to other backends - Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB) - are less debugged). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Download: https://pypi.org/project/SQLObject/3.12.0.post2 News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Mailing lists: https://sourceforge.net/p/sqlobject/mailman/ Development: http://sqlobject.org/devel/ Developer Guide: http://sqlobject.org/DeveloperGuide.html Example ======= Install:: $ pip install sqlobject Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2024-12-20 12:57:40
|
Hello! I'm pleased to announce version 3.12.0, the release of branch 3.12 of SQLObject. What's new in SQLObject ======================= Drivers ------- * Add support for CyMySQL; there're some problems with unicode yet. * Separate ``psycopg`` and ``psycopg2``; ``psycopg`` is actually ``psycopg3`` now; not all tests pass. * Minor fix in getting error code from PyGreSQL. * Dropped ``oursql``. It wasn't updated in years. * Dropped ``PySQLite2``. Only builtin ``sqlite3`` is supported. Tests ----- * Run tests with Python 3.13. * Run tests with ``psycopg-c``; not all tests pass. * Fix ``test_exceptions.py`` under MariaDB, PostgreSQL and SQLite. * ``py-postgres``: Set ``sslmode`` to ``allow``; upstream changed default to ``prefer``. CI -- * Run tests with ``PyGreSQL`` on w32, do not ignore errors. * Skip tests with ``pg8000`` on w32. * GHActions: Switch to ``setup-miniconda``. * GHActions: Python 3.13. For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is a free and open-source (LGPL) Python object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL/MariaDB (with a number of DB API drivers: ``MySQLdb``, ``mysqlclient``, ``mysql-connector``, ``PyMySQL``, ``mariadb``), PostgreSQL (``psycopg2``, ``PyGreSQL``, partially ``pg8000`` and ``py-postgresql``), SQLite (builtin ``sqlite3``); connections to other backends - Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB) - are less debugged). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Download: https://pypi.org/project/SQLObject/3.12.0 News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Mailing lists: https://sourceforge.net/p/sqlobject/mailman/ Development: http://sqlobject.org/devel/ Developer Guide: http://sqlobject.org/DeveloperGuide.html Example ======= Install:: $ pip install sqlobject Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2024-04-09 18:06:53
|
Hi! On Tue, Apr 09, 2024 at 10:09:44AM -0700, Nitin Chauhan <nit...@gm...> wrote: > Can you please let me know how I can make multiple separate MySQL sqlobject > connections work with each process in a multiprocessing pool? I do not understand the question. Every process just opens a new connection. Starts a transaction, performs operation(s), commits, closes the transaction. Before exit closes the connection. Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Nitin C. <nit...@gm...> - 2024-04-09 17:10:12
|
Thanks for the reply Oleg, Can you please let me know how I can make multiple separate MySQL sqlobject connections work with each process in a multiprocessing pool? On Tue, Apr 2, 2024 at 10:10 AM Oleg Broytman <ph...@ph...> wrote: > Hello! > > On Tue, Apr 02, 2024 at 09:37:51AM -0700, Nitin Chauhan < > nit...@gm...> wrote: > > Can anyone please share if SQLObject even supports multiprocessing pools? > > I'm sure it doesn't. Every process must open its own connection(s). > For many backends even every thread must open per-thread connection. > > > Best Regards, > > Nitin Chauhan > > Oleg. > -- > Oleg Broytman https://phdru.name/ ph...@ph... > Programmers don't die, they just GOSUB without RETURN. > > > _______________________________________________ > sqlobject-discuss mailing list > sql...@li... > https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss > |
From: Oleg B. <ph...@ph...> - 2024-04-02 17:10:32
|
Hello! On Tue, Apr 02, 2024 at 09:37:51AM -0700, Nitin Chauhan <nit...@gm...> wrote: > Can anyone please share if SQLObject even supports multiprocessing pools? I'm sure it doesn't. Every process must open its own connection(s). For many backends even every thread must open per-thread connection. > Best Regards, > Nitin Chauhan Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Nitin C. <nit...@gm...> - 2024-04-02 16:38:18
|
Hi SQLObject forum, I have been trying to implement a multi-processed migration job that parallelly reads mutually exclusive batches of records from a single table based on the record's ID and sends that data to elasticsearch. I use the cpu_count in multiprocessing module to at run time how many cores exists, creates same number of batches and then create a multi processed pool based on that value of cpu_count that each one of them reads mutually exclusive records with absolutely no shared state to read the records.But this doesn't seem to work. Can anyone please share if SQLObject even supports multiprocessing pools? If yes, can someone please guide me to an example blog or some code snippet that is able to successfully handle SQlObject MySQL connection in multiprocessing pools? Looking forward to hearing back from you. Best Regards, Nitin Chauhan |
From: Oleg B. <ph...@ph...> - 2023-11-11 13:18:12
|
Hello! I'm pleased to announce version 3.11.0, the first stable release of branch 3.11 of SQLObject. What's new in SQLObject ======================= Features -------- * Continue working on ``SQLRelatedJoin`` aliasing introduced in 3.10.2. When a table joins with itself calling ``relJoinCol.filter(thisClass.q.column)`` raises ``ValueError`` hinting that an alias is required for filtering. * Test that ``idType`` is either ``int`` or ``str``. * Added ``sqlmeta.idSize``. This sets the size of integer column ``id`` for MySQL and PostgreSQL. Allowed values are ``'TINY'``, ``'SMALL'``, ``'MEDIUM'``, ``'BIG'``, ``None``; default is ``None``. For Postgres mapped to ``smallserial``/``serial``/``bigserial``. For other backends it's currently ignored. Feature request by Meet Gujrathi at https://stackoverflow.com/q/77360075/7976758 For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is a free and open-source (LGPL) Python object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL/MariaDB (with a number of DB API drivers: ``MySQLdb``, ``mysqlclient``, ``mysql-connector``, ``PyMySQL``, ``mariadb``), PostgreSQL (``psycopg2``, ``PyGreSQL``, partially ``pg8000`` and ``py-postgresql``), SQLite (builtin ``sqlite``, ``pysqlite``); connections to other backends - Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB) - are less debugged). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Download: https://pypi.org/project/SQLObject/3.11.0 News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Mailing lists: https://sourceforge.net/p/sqlobject/mailman/ Development: http://sqlobject.org/devel/ Developer Guide: http://sqlobject.org/DeveloperGuide.html Example ======= Install:: $ pip install sqlobject Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2023-11-04 12:00:28
|
Hello! I'm pleased to announce version 3.11.0b1, the first beta of the upcoming release of branch 3.11 of SQLObject. What's new in SQLObject ======================= Features -------- * Continue working on ``SQLRelatedJoin`` aliasing introduced in 3.10.2. When a table joins with itself calling ``relJoinCol.filter(thisClass.q.column)`` raises ``ValueError`` hinting that an alias is required for filtering. * Test that ``idType`` is either ``int`` or ``str``. * Added ``sqlmeta.idSize``. This sets the size of integer column ``id`` for MySQL and PostgreSQL. Allowed values are ``'TINY'``, ``'SMALL'``, ``'MEDIUM'``, ``'BIG'``, ``None``; default is ``None``. For Postgres mapped to ``smallserial``/``serial``/``bigserial``. For other backends it's currently ignored. Feature request by Meet Gujrathi at https://stackoverflow.com/q/77360075/7976758 For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is a free and open-source (LGPL) Python object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL/MariaDB (with a number of DB API drivers: ``MySQLdb``, ``mysqlclient``, ``mysql-connector``, ``PyMySQL``, ``mariadb``), PostgreSQL (``psycopg2``, ``PyGreSQL``, partially ``pg8000`` and ``py-postgresql``), SQLite (builtin ``sqlite``, ``pysqlite``); connections to other backends - Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB) - are less debugged). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Download: https://pypi.org/project/SQLObject/3.11.0b1 News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Mailing lists: https://sourceforge.net/p/sqlobject/mailman/ Development: http://sqlobject.org/devel/ Developer Guide: http://sqlobject.org/DeveloperGuide.html Example ======= Install:: $ pip install sqlobject Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2023-10-25 16:38:55
|
Hello! I'm pleased to announce version 3.10.3, the 3rd bugfix release of branch 3.10 of SQLObject. What's new in SQLObject ======================= The contributors for this release are Igor Yudytskiy and shuffle (github.com/shuffleyxf). Thanks! Bug fixes --------- * Relaxed aliasing in ``SQLRelatedJoin`` introduced in 3.10.2 - aliasing is required only when the table joins with itself. When there're two tables to join aliasing prevents filtering -- wrong SQL is generated in ``relJoinCol.filter(thisClass.q.column)``. Drivers ------- * Fix(SQLiteConnection): Release connections from threads that are no longer active. This fixes memory leak in multithreaded programs in Windows. ``SQLite`` requires different connections per thread so ``SQLiteConnection`` creates and stores a connection per thread. When a thread finishes its connections should be closed. But if a program doesn't cooperate and doesn't close connections at the end of a thread SQLObject leaks memory as connection objects are stuck in ``SQLiteConnection``. On Linux the leak is negligible as Linux reuses thread IDs so new connections replace old ones and old connections are garbage collected. But Windows doesn't reuse thread IDs so old connections pile and never released. To fix the problem ``SQLiteConnection`` now enumerates threads and releases connections from non-existing threads. * Dropped ``supersqlite``. It seems abandoned. The last version 0.0.78 was released in 2018. Tests ----- * Run tests with Python 3.12. CI -- * GHActions: Ensure ``pip`` only if needed This is to work around a problem in conda with Python 3.7 - it brings in wrong version of ``setuptools`` incompatible with Python 3.7. For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is a free and open-source (LGPL) Python object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL/MariaDB (with a number of DB API drivers: ``MySQLdb``, ``mysqlclient``, ``mysql-connector``, ``PyMySQL``, ``mariadb``), PostgreSQL (``psycopg2``, ``PyGreSQL``, partially ``pg8000`` and ``py-postgresql``), SQLite (builtin ``sqlite``, ``pysqlite``); connections to other backends - Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB) - are less debugged). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Download: https://pypi.org/project/SQLObject/3.10.3 News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Mailing lists: https://sourceforge.net/p/sqlobject/mailman/ Development: http://sqlobject.org/devel/ Developer Guide: http://sqlobject.org/DeveloperGuide.html Example ======= Install:: $ pip install sqlobject Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2023-08-09 12:18:42
|
Hello! I'm pleased to announce version 3.10.2, a minor feature release and the second bugfix release of branch 3.10 of SQLObject. What's new in SQLObject ======================= The contributor for this release is Igor Yudytskiy. Thanks! Minor features -------------- * Class ``Alias`` grows a method ``.select()`` to match ``SQLObject.select()``. Bug fixes --------- * Fixed a bug in ``SQLRelatedJoin`` in the case where the table joins with itself; in the resulting SQL two instances of the table must use different aliases. Thanks to Igor Yudytskiy for providing an elaborated bug report. For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is a free and open-source (LGPL) Python object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL/MariaDB (with a number of DB API drivers: ``MySQLdb``, ``mysqlclient``, ``mysql-connector``, ``PyMySQL``, ``mariadb``), PostgreSQL (``psycopg2``, ``PyGreSQL``, partially ``pg8000`` and ``py-postgresql``), SQLite (builtin ``sqlite``, ``pysqlite``, partially ``supersqlite``); connections to other backends - Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB) - are less debugged). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Download: https://pypi.org/project/SQLObject/3.10.2a0.dev20221222/ News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Mailing lists: https://sourceforge.net/p/sqlobject/mailman/ Development: http://sqlobject.org/devel/ Developer Guide: http://sqlobject.org/DeveloperGuide.html Example ======= Install:: $ pip install sqlobject Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2022-12-22 16:40:53
|
Hello! I'm pleased to announce version 3.10.1, the first minor feature release of branch 3.10 of SQLObject. What's new in SQLObject ======================= Minor features -------------- * Use ``module_loader.exec_module(module_loader.create_module())`` instead of ``module_loader.load_module()`` when available. Drivers ------- * Added ``mysql-connector-python``. Tests ----- * Run tests with Python 3.11. CI -- * Ubuntu >= 22 and ``setup-python`` dropped Pythons < 3.7. Use ``conda`` via ``s-weigand/setup-conda`` instead of ``setup-python`` to install older Pythons on Linux. For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is a free and open-source (LGPL) Python object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL/MariaDB (with a number of DB API drivers: ``MySQLdb``, ``mysqlclient``, ``mysql-connector``, ``PyMySQL``, ``mariadb``), PostgreSQL (``psycopg2``, ``PyGreSQL``, partially ``pg8000`` and ``py-postgresql``), SQLite (builtin ``sqlite``, ``pysqlite``, partially ``supersqlite``); connections to other backends - Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB) - are less debugged). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Download: https://pypi.org/project/SQLObject/3.10.1 News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Mailing lists: https://sourceforge.net/p/sqlobject/mailman/ Development: http://sqlobject.org/devel/ Developer Guide: http://sqlobject.org/DeveloperGuide.html Example ======= Install:: $ pip install sqlobject Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2022-09-20 17:44:04
|
Hello! I'm pleased to announce version 3.10.0, the first release of branch 3.10 of SQLObject. What's new in SQLObject ======================= Contributors for this release are James Hudson, Juergen Gmach, Hugo van Kemenade. Many thanks! Features -------- * Allow connections in ``ConnectionHub`` to be strings. This allows to open a new connection in every thread. * Add compatibility with ``Pendulum``. Tests ----- * Run tests with Python 3.10. CI -- * GitHub Actions. * Stop testing at Travis CI. * Stop testing at AppVeyor. Documentation ------------- * DevGuide: source code must be pure ASCII. * DevGuide: ``reStructuredText`` format for docstrings is recommended. * DevGuide: de-facto good commit message format is required: subject/body/trailers. * DevGuide: ``conventional commit`` format for commit message subject lines is recommended. * DevGuide: ``Markdown`` format for commit message bodies is recommended. * DevGuide: commit messages must be pure ASCII. For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is an object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite; connections to other backends - Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB) - are lesser debugged). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Development: http://sqlobject.org/devel/ Mailing list: https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss Download: https://pypi.org/project/SQLObject/3.10.0 News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Example ======= Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Rich S. <rsh...@ap...> - 2021-06-10 17:32:30
|
On Thu, 10 Jun 2021, Oleg Broytman wrote: > For some time I had been generating the docs at RTFD but last push > was in 2017: > I stopped using RTFD because nobody's expressed interest in using the > docs. People seem to be satisfied with http://sqlobject.org/ Oleg, Okay. > There is no a separate tutorial document. THe best you can find is an > introduction: > http://sqlobject.org/SQLObject.html#using-sqlobject-an-introduction I saw that. I'll start playing with it and see what happens. Thanks for the quick response, Rich |
From: Oleg B. <ph...@ph...> - 2021-06-10 17:16:06
|
Hello! On Thu, Jun 10, 2021 at 09:09:57AM -0700, Rich Shepard <rsh...@ap...> wrote: > I'm not a full-time developer but have a couple of desktop applications to > build. Welcome and thank you for your interest in SQLObject! > The backend is postgresql-12.7 (tables built and holding data), the > UI is TKinter (python-3.7.2) and the connector is psycopg2-2.8.6. All this > runs on Slackware64-14.2. Sorry, that's irrelevant. > The SQLObject web site's documentation page has a list of links. Are the > docs available as a downloadable PDF file? For some time I had been generating the docs at RTFD but last push was in 2017: https://sqlobject.readthedocs.io/en/stable/News.html#sqlobject-3-3-0 The PDF is at https://sqlobject.readthedocs.io/_/downloads/en/stable/pdf/ I stopped using RTFD because nobody's expressed interest in using the docs. People seem to be satisfied with http://sqlobject.org/ > Is there a tutorial so I can > learn how to start and become familiar and comfortable with the tool? There is no a separate tutorial document. THe best you can find is an introduction: http://sqlobject.org/SQLObject.html#using-sqlobject-an-introduction You are welcome to send pull requests to fix or extend the docs! > TIA, > Rich Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Rich S. <rsh...@ap...> - 2021-06-10 16:26:29
|
I'm not a full-time developer but have a couple of desktop applications to build. The backend is postgresql-12.7 (tables built and holding data), the UI is TKinter (python-3.7.2) and the connector is psycopg2-2.8.6. All this runs on Slackware64-14.2. The SQLObject web site's documentation page has a list of links. Are the docs available as a downloadable PDF file? Is there a tutorial so I can learn how to start and become familiar and comfortable with the tool? TIA, Rich |
From: Oleg B. <ph...@ph...> - 2021-02-27 14:16:00
|
Hello! I'm pleased to announce version 3.9.1, the first minor feature release of branch 3.9 of SQLObject. What's new in SQLObject ======================= Drivers ------- * Adapt to the latest ``pg8000``. * Protect ``getuser()`` - it can raise ``ImportError`` on w32 due to absent of ``pwd`` module. Build ----- * Change URLs for ``oursql`` in ``extras_require`` in ``setup.py``. Provide separate URLs for Python 2.7 and 3.4+. * Add ``mariadb`` in ``extras_require`` in ``setup.py``. CI -- * For tests with Python 3.4 run ``tox`` under Python 3.5. Tests ----- * Refactor ``tox.ini``. For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is an object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite; connections to other backends - Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB) - are lesser debugged). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Development: http://sqlobject.org/devel/ Mailing list: https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss Download: https://pypi.org/project/SQLObject/3.9.1 News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Example ======= Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2020-12-15 14:35:12
|
Hello! I'm pleased to announce version 3.9.0, the first release of branch 3.9 of SQLObject. What's new in SQLObject ======================= Contributors for this release are: + Michael S. Root, Ameya Bapat - ``JSONCol``; + Jerry Nance - reported a bug with ``DateTime`` from ``Zope``. Features -------- * Add ``JSONCol``: a universal json column that converts simple Python objects (None, bool, int, float, long, dict, list, str/unicode to/from JSON using json.dumps/loads. A subclass of StringCol. Requires ``VARCHAR``/``TEXT`` columns at backends, doesn't work with ``JSON`` columns. * Extend/fix support for ``DateTime`` from ``Zope``. * Drop support for very old version of ``mxDateTime`` without ``mx.`` namespace. Drivers ------- * Support `mariadb <https://pypi.org/project/mariadb/>`_. CI -- * Run tests with Python 3.9 at Travis and AppVeyor. For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is an object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. It currently supports MySQL, PostgreSQL and SQLite; connections to other backends - Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB) - are lesser debugged). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Development: http://sqlobject.org/devel/ Mailing list: https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss Download: https://pypi.org/project/SQLObject/3.9.0 News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Example ======= Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2020-10-01 15:28:01
|
Hello! I'm pleased to announce version 3.8.1, the first bugfix release of branch 3.8 of SQLObject. What's new in SQLObject ======================= The contributor for this release is Neil Muller. Documentation ------------- * Use conf.py options to exclude sqlmeta options. Tests ----- * Fix ``PyGreSQL`` version for Python 3.4. CI -- * Run tests with Python 3.8 at AppVeyor. For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is an object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Development: http://sqlobject.org/devel/ Mailing list: https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss Download: https://pypi.org/project/SQLObject/3.8.1a0.dev20191208/ News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Example ======= Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2019-12-07 18:46:10
|
Hello! I'm pleased to announce version 3.8.0, the first stable release of branch 3.8 of SQLObject. What's new in SQLObject ======================= Features -------- * Add driver ``supersqlite``. Not all tests are passing so the driver isn't added to the list of default drivers. Minor features -------------- * Improve sqlrepr'ing ``ALL/ANY/SOME()``: always put the expression at the right side of the comparison operation. Bug fixes --------- * Fixed a bug in cascade deletion/nullification. * Fixed a bug in ``PostgresConnection.columnsFromSchema``: PostgreSQL 12 removed outdated catalog attribute ``pg_catalog.pg_attrdef.adsrc``. * Fixed a bug working with microseconds in Time columns. CI -- * Run tests with Python 3.8 at Travis CI. Contributors for this release are Andrew Trusty, Marco Sirabella and darix. For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is an object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Development: http://sqlobject.org/devel/ Mailing list: https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss Download: https://pypi.org/project/SQLObject/3.8.0 News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Example ======= Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2019-09-22 13:55:53
|
Hello! I'm pleased to announce version 3.7.3, a bugfix release of branch 3.7 of SQLObject. What's new in SQLObject ======================= Bug fixes --------- * Avoid excessive parentheses around ``ALL/ANY/SOME()``. Tests ----- * Add tests for cascade deletion. * Add tests for ``sqlbuilder.ALL/ANY/SOME()``. * Fix calls to ``pytest.mark.skipif`` - make conditions bool instead of str. * Fix module-level calls to ``pytest.mark.skip`` - add reasons. * Fix escape sequences ``'\%'`` -> ``'\\%'``. CI -- * Reduce the number of virtual machines/containers: one OS, one DB, one python version, many drivers per VM. * Fix sqlite test under Python 3.7+ at AppVeyor. Contributors for this release are For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is an object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Development: http://sqlobject.org/devel/ Mailing list: https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss Download: https://pypi.org/project/SQLObject/3.7.3 News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Example ======= Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2019-05-01 16:18:33
|
Hello! I'm pleased to announce version 3.7.2, the second bugfix release of branch 3.7 of SQLObject. What's new in SQLObject ======================= Minor features -------------- * Adapt Postgres exception handling to ``psycopg2`` version ``2.8``: in the recent ``psycopg2`` errors are in ``psycopg2.errors`` module. * Removed RdbhostConnection: David Keeney and rdbhost seem to be unavailable since 2017. For a more complete list, please see the news: http://sqlobject.org/News.html What is SQLObject ================= SQLObject is an object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB). Python 2.7 or 3.4+ is required. Where is SQLObject ================== Site: http://sqlobject.org Development: http://sqlobject.org/devel/ Mailing list: https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss Download: https://pypi.org/project/SQLObject/3.7.2 News and changes: http://sqlobject.org/News.html StackOverflow: https://stackoverflow.com/questions/tagged/sqlobject Example ======= Create a simple class that wraps a table:: >>> from sqlobject import * >>> >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:') >>> >>> class Person(SQLObject): ... fname = StringCol() ... mi = StringCol(length=1, default=None) ... lname = StringCol() ... >>> Person.createTable() Use the object:: >>> p = Person(fname="John", lname="Doe") >>> p <Person 1 fname='John' mi=None lname='Doe'> >>> p.fname 'John' >>> p.mi = 'Q' >>> p2 = Person.get(1) >>> p2 <Person 1 fname='John' mi='Q' lname='Doe'> >>> p is p2 True Queries:: >>> p3 = Person.selectBy(lname="Doe")[0] >>> p3 <Person 1 fname='John' mi='Q' lname='Doe'> >>> pc = Person.select(Person.q.lname=="Doe").count() >>> pc 1 Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2019-04-22 21:01:19
|
On Mon, Apr 22, 2019 at 10:44:10PM +0200, Markus Elfring <Mar...@we...> wrote: > > I don't think UML sources will be changed frequently so it would be > > enough to render diagrams offline and add graphics to the repository. > > Can you become used to any more automatic generation of higher-level > software documentation? If you've seen how SQLObject's test are ran at Travis and AppVeyor CI you could guess I love and use automation. The requirements are: the tools should preferably be free software and they must be available at Travis (Ubuntu, ``apt get``) and AppVeyor CI (w32, nuget or chocolatey, ``choco install``). > Regards, > Markus Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Markus E. <Mar...@we...> - 2019-04-22 20:44:24
|
> I don't think UML sources will be changed frequently so it would be > enough to render diagrams offline and add graphics to the repository. Can you become used to any more automatic generation of higher-level software documentation? Regards, Markus |
From: Oleg B. <ph...@ph...> - 2019-04-22 19:48:16
|
On Mon, Apr 22, 2019 at 09:18:47PM +0200, Markus Elfring <Mar...@we...> wrote: > > Depends of the quality of those diagrams. > > How do you think about to integrate any known graph generation tool > into the current software build process? I don't think UML sources will be changed frequently so it would be enough to render diagrams offline and add graphics to the repository. > Regards, > Markus Oleg. -- Oleg Broytman https://phdru.name/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |