Add support for connections for postgres and mariadb
This commit is contained in:
parent
0c4cce2533
commit
69e2ce2b53
|
@ -1,3 +1,7 @@
|
||||||
|
v 0.16.0 [-jun-2021]
|
||||||
|
- Add connection for postgres and mariadb
|
||||||
|
|
||||||
|
|
||||||
v 0.15.0 [05-jun-2021]
|
v 0.15.0 [05-jun-2021]
|
||||||
- Add autostyle for Writer tables
|
- Add autostyle for Writer tables
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
|
||||||
|
Base
|
||||||
|
----
|
||||||
|
|
||||||
|
Remember, always import library.
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import easymacro as app
|
||||||
|
|
||||||
|
|
||||||
|
New database
|
||||||
|
^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
path = '/home/mau/db.odb'
|
||||||
|
db = app.doc.connect(path)
|
||||||
|
app.msgbox(db.type)
|
||||||
|
|
|
@ -17,3 +17,4 @@ You can used **easymacro.py** with any extension or directly in your macros.
|
||||||
application.rst
|
application.rst
|
||||||
calc.rst
|
calc.rst
|
||||||
writer.rst
|
writer.rst
|
||||||
|
base.rst
|
||||||
|
|
|
@ -4003,7 +4003,8 @@ class LODocs(object):
|
||||||
return _get_class_doc(doc)
|
return _get_class_doc(doc)
|
||||||
|
|
||||||
def connect(self, path):
|
def connect(self, path):
|
||||||
return LOBase(None, {'path': path})
|
db = LOBase(None, {'path': path})
|
||||||
|
return db
|
||||||
|
|
||||||
|
|
||||||
def _add_listeners(events, control, name=''):
|
def _add_listeners(events, control, name=''):
|
||||||
|
@ -4731,6 +4732,13 @@ class UnoText(UnoBaseObject):
|
||||||
def value(self, value):
|
def value(self, value):
|
||||||
self.model.Text = value
|
self.model.Text = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def echochar(self):
|
||||||
|
return chr(self.model.EchoChar)
|
||||||
|
@echochar.setter
|
||||||
|
def echochar(self, value):
|
||||||
|
self.model.EchoChar = ord(value[0])
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -5571,6 +5579,11 @@ class LODialog(object):
|
||||||
self.obj.dispose()
|
self.obj.dispose()
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
def set_values(self, data):
|
||||||
|
for k, v in data.items():
|
||||||
|
self._controls[k].value = v
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
class LOSheets(object):
|
class LOSheets(object):
|
||||||
|
|
||||||
|
@ -6057,6 +6070,70 @@ class LOWindow(object):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
class LODBServer(object):
|
||||||
|
DRIVERS = {
|
||||||
|
'mysql': 'mysqlc',
|
||||||
|
'mariadb': 'mysqlc',
|
||||||
|
'postgres': 'postgresql:postgresql',
|
||||||
|
}
|
||||||
|
PORTS = {
|
||||||
|
'mysql': 3306,
|
||||||
|
'mariadb': 3306,
|
||||||
|
'postgres': 5432,
|
||||||
|
}
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self._conn = None
|
||||||
|
self._error = ''
|
||||||
|
self._type = ''
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f'DB type {self._type}'
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, exc_type, exc_value, traceback):
|
||||||
|
self.disconnet()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_connected(self):
|
||||||
|
return not bool(self._error)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def error(self):
|
||||||
|
return self._error
|
||||||
|
|
||||||
|
def disconnet(self):
|
||||||
|
if not self._conn is None:
|
||||||
|
if not self._conn.isClosed():
|
||||||
|
self._conn.close()
|
||||||
|
self._conn.dispose()
|
||||||
|
|
||||||
|
def connect(self, args):
|
||||||
|
self._error = ''
|
||||||
|
self._type = args.get('type', 'postgres')
|
||||||
|
driver = self.DRIVERS[self._type]
|
||||||
|
server = args.get('server', 'localhost')
|
||||||
|
port = args.get('port', self.PORTS[self._type])
|
||||||
|
dbname = args.get('dbname', '')
|
||||||
|
user = args['user']
|
||||||
|
password = args['password']
|
||||||
|
|
||||||
|
data = {'user': user, 'password': password}
|
||||||
|
url = f'sdbc:{driver}://{server}:{port}/{dbname}'
|
||||||
|
args = dict_to_property(data)
|
||||||
|
manager = create_instance('com.sun.star.sdbc.DriverManager')
|
||||||
|
|
||||||
|
try:
|
||||||
|
self._conn = manager.getConnectionWithInfo(url, args)
|
||||||
|
except Exception as e:
|
||||||
|
error(e)
|
||||||
|
self._error = str(e)
|
||||||
|
|
||||||
|
return self
|
||||||
|
|
||||||
|
|
||||||
def create_window(args):
|
def create_window(args):
|
||||||
return LOWindow(args)
|
return LOWindow(args)
|
||||||
|
|
||||||
|
@ -6565,6 +6642,8 @@ def __getattr__(name):
|
||||||
return Paths
|
return Paths
|
||||||
if name == 'docs':
|
if name == 'docs':
|
||||||
return LODocs()
|
return LODocs()
|
||||||
|
if name == 'db':
|
||||||
|
return LODBServer()
|
||||||
if name == 'sheets':
|
if name == 'sheets':
|
||||||
return LOSheets()
|
return LOSheets()
|
||||||
if name == 'cells':
|
if name == 'cells':
|
||||||
|
|
Loading…
Reference in New Issue