/usr/share/gnubg/scripts/database.py is in gnubg-data 1.04.000-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | #
# database.py
#
# by Joern Thyssen <jth@gnubg.org>, 2004
# Michael Petch <mpetch@gnubg.org>, 2013
#
# This file contains the functions for adding matches to a relational
# database.
#
# The modules use the DB API V2 python modules.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# $Id: database.py,v 1.34 2013/08/21 03:45:23 mdpetch Exp $
#
connection = 0
def PyMySQLConnect(database, user, password, hostname):
global connection
try:
import MySQLdb
except:
# See if pymsql (pure Python replacement) is available. Works on MS
# Windows
import pymysql as MySQLdb
hostport = hostname.strip().split(':')
try:
mysql_host = hostport[0]
except:
mysql_host = 'localhost'
try:
mysql_portstr = hostport[1]
try:
mysql_port = int(mysql_portstr)
except:
return -1
except:
mysql_port = 3306
try:
connection = MySQLdb.connect(
host=mysql_host, port=mysql_port, db=database, user=user, passwd=password)
return 1
except:
# See if mysql is there
try:
connection = MySQLdb.connect(
host=mysql_host, port=mysql_port, user=user, passwd=password)
# See if database present
cursor = connection.cursor()
r = cursor.execute(
'show databases where `Database` = "' + database + '";')
if (r != 0):
return -2 # failed
cursor.execute('create database ' + database)
connection = MySQLdb.connect(
host=mysql_host, port=mysql_port, db=database, user=user, passwd=password)
return 0
except:
return -1 # failed
return connection
def PyPostgreConnect(database, user, password, hostname):
global connection
import pgdb
postgres_host = hostname.strip()
try:
connection = pgdb.connect(
host=postgres_host, user=user, password=password, database=database)
return 1
except:
# See if postgres is there
try:
# See if database present
connection = pgdb.connect(
host=postgres_host, user=user, password=password, database='postgres')
cursor = connection.cursor()
cursor.execute(
'select datname from pg_database where datname=\'' + database + '\'')
r = cursor.fetchone()
if (r is not None):
return -2 # database found
cursor.execute('END')
cursor.execute('create database ' + database)
connection = pgdb.connect(
host=postgres_host, database=database, user=user, password=password)
return 0
except:
return -1 # failed
return connection
def PySQLiteConnect(dbfile):
global connection
from sqlite3 import dbapi2 as sqlite
connection = sqlite.connect(dbfile)
return connection
def PyDisconnect():
global connection
try:
connection.close()
except:
pass
def PySelect(str):
global connection
cursor = connection.cursor()
try:
cursor.execute("SELECT " + str)
except:
return 0
all = list(cursor.fetchall())
if (len(all) > 0):
titles = [cursor.description[i][0]
for i in range(len(cursor.description))]
all.insert(0, titles)
return all
def PyUpdateCommand(stmt):
global connection
cursor = connection.cursor()
cursor.execute(stmt)
def PyUpdateCommandReturn(stmt):
global connection
cursor = connection.cursor()
cursor.execute(stmt)
return list(cursor.fetchall())
def PyCommit():
global connection
connection.commit()
|