Документацию сложно найти, и как только вы ее найдете, она довольно ужасна.Вот что я нашел за последние 3 часа.
Вам необходимо установить ibm_db
, используя pip
, следующим образом:
pip install ibm_db
Вы захотите создать соединениеобъект. Документация здесь.
Вот что я написал:
from ibm_db import connect
# Careful with the punctuation here - we have 3 arguments.
# The first is a big string with semicolons in it.
# (Strings separated by only whitespace, newlines included,
# are automatically joined together, in case you didn't know.)
# The last two are emptry strings.
connection = connect('DATABASE=<database name>;'
'HOSTNAME=<database ip>;' # 127.0.0.1 or localhost works if it's local
'PORT=<database port>;'
'PROTOCOL=TCPIP;'
'UID=<database username>;'
'PWD=<username password>;', '', '')
Далее вы должны знать, что команды на ibm_db
фактически никогда не дают вам результатов.Вместо этого вам нужно повторно вызывать один из методов fetch
в команде, чтобы получить результаты.Я написал эту вспомогательную функцию, чтобы справиться с этим.
def results(command):
from ibm_db import fetch_assoc
ret = []
result = fetch_assoc(command)
while result:
# This builds a list in memory. Theoretically, if there's a lot of rows,
# we could run out of memory. In practice, I've never had that happen.
# If it's ever a problem, you could use
# yield result
# Then this function would become a generator. You lose the ability to access
# results by index or slice them or whatever, but you retain
# the ability to iterate on them.
ret.append(result)
result = fetch_assoc(command)
return ret # Ditch this line if you choose to use a generator.
Теперь с этой определенной вспомогательной функцией вы можете легко сделать что-то вроде получения информации обо всех таблицах в вашей базе данных с помощью следующего:
from ibm_db import tables
t = results(tables(connection))
Если вы хотите видеть все в данной таблице, вы можете сделать что-то вроде этого сейчас:
from ibm_db import exec_immediate
sql = 'LIST * FROM ' + t[170]['TABLE_NAME'] # Using our list of tables t from before...
rows = results(exec_immediate(connection, sql))
А теперь rows
содержит list
строк из 170-готаблица в вашей базе данных, где каждая строка содержит dict
имя столбца: значение.
Надеюсь, это все поможет.