Нежелательные символы при записи вывода из запроса SQL внутри tcolorbox - PullRequest
1 голос
/ 01 февраля 2020

Я использую python3, MariaDB, Jinja2 и LaTeX + tcolorbox. Я пытаюсь записать вывод запроса SQL внутри поля tcolour, но он показывает его внутри ('',), как показано на следующем снимке экрана:

, показывающий ('10 .0.38 -MariaDB-0ubuntu0.16.04.1 ',)

Как удалить нежелательные символы? Спасибо. Пожалуйста, смотрите код, включенный ниже.

testdb.py

#!/usr/bin/python3
import jinja2
import os
import MySQLdb

connection = MySQLdb.connect("localhost","test","password")
cursor = connection.cursor()


# execute SQL query using execute() method.
cursor.execute("SELECT VERSION()")
# Fetch a single row using fetchone() method.
data = cursor.fetchone()
cursor.close()
connection.close()

from jinja2 import Template
latex_jinja_env = jinja2.Environment(
    block_start_string = '\BLOCK{',
    block_end_string = '}',
    variable_start_string = '\VAR{',
    variable_end_string = '}',
    comment_start_string = '\#{',
    comment_end_string = '}',
    line_statement_prefix = '%%',
    line_comment_prefix = '%#',
    trim_blocks = True,
    autoescape = False,
    loader = jinja2.FileSystemLoader(os.path.abspath('.'))
)

template = latex_jinja_env.get_template('tcsqltest.template')

print(template.render(section1="SQL query : %s " % data, data1=data, section2='SQL query shown inside tcolorbox example.'))

tcsqltest.template

\documentclass[11pt]{article}
\usepackage[many]{tcolorbox}
\begin{document}
\section{Example}
An example document using \LaTeX, Python, SQL, tcolorbox  and Jinja2.
\section{\VAR{section1}}
%# This is a sql database query output
\section{\VAR{section2}}

  \begin{tcolorbox}[space to upper,
        skin=bicolor,
        colbacklower=black!75,
        collower=white,
        title={Top Title},
        halign=center,
        valign=center,
        nobeforeafter,
        halign lower=flush right,
        bottom=0mm,
        height=3cm
    ]

        \VAR{data1}

        \tcblower
        End-Title
    \end{tcolorbox}%
\end{document}

1 Ответ

0 голосов
/ 01 февраля 2020

Метод .fetchone() возвращает последовательность; в этом случае кортеж. И в этом случае 1-кортеж. Таким образом, вы можете взять первый и единственный элемент этого 1-го кортежа, выполнив вместо этого:

data = cursor.fetchone()[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...