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]
|
||||
- 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
|
||||
calc.rst
|
||||
writer.rst
|
||||
base.rst
|
||||
|
|
|
@ -4003,7 +4003,8 @@ class LODocs(object):
|
|||
return _get_class_doc(doc)
|
||||
|
||||
def connect(self, path):
|
||||
return LOBase(None, {'path': path})
|
||||
db = LOBase(None, {'path': path})
|
||||
return db
|
||||
|
||||
|
||||
def _add_listeners(events, control, name=''):
|
||||
|
@ -4731,6 +4732,13 @@ class UnoText(UnoBaseObject):
|
|||
def value(self, 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):
|
||||
return
|
||||
|
||||
|
@ -5571,6 +5579,11 @@ class LODialog(object):
|
|||
self.obj.dispose()
|
||||
return value
|
||||
|
||||
def set_values(self, data):
|
||||
for k, v in data.items():
|
||||
self._controls[k].value = v
|
||||
return
|
||||
|
||||
|
||||
class LOSheets(object):
|
||||
|
||||
|
@ -6057,6 +6070,70 @@ class LOWindow(object):
|
|||
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):
|
||||
return LOWindow(args)
|
||||
|
||||
|
@ -6565,6 +6642,8 @@ def __getattr__(name):
|
|||
return Paths
|
||||
if name == 'docs':
|
||||
return LODocs()
|
||||
if name == 'db':
|
||||
return LODBServer()
|
||||
if name == 'sheets':
|
||||
return LOSheets()
|
||||
if name == 'cells':
|
||||
|
|
Loading…
Reference in New Issue