Sql 如何从数据库字段类型字符串中获取列表

Sql 如何从数据库字段类型字符串中获取列表,sql,python-3.x,list,flask,sqlalchemy,Sql,Python 3.x,List,Flask,Sqlalchemy,我在DB中的一列字符/字符串中有此列表: ['2020-09-05 10:15:00', '2020-09-05 10:30:00', '2020-09-05 10:45:00', '2020-09-05 11:00:00', '2020-09-05 11:15:00'] 我把他们带到蟒蛇3: employee_id = request.args.get('id') employee = Employee.query.filter_by(id = employee_i

我在DB中的一列字符/字符串中有此列表:

['2020-09-05 10:15:00', '2020-09-05 10:30:00', '2020-09-05 10:45:00', '2020-09-05 11:00:00', '2020-09-05 11:15:00']
我把他们带到蟒蛇3:

 employee_id = request.args.get('id')
            employee = Employee.query.filter_by(id = employee_id).first()
            list_time_em = employee.free_time
            print(list_time_em) 
            for x in list_time_em:
                print(x). #try to print time in list from DB
结果

['2020-09-05 10:15:00', '2020-09-05 10:30:00', '2020-09-05 10:45:00', '2020-09-05 11:00:00', '2020-09-05 11:15:00']

['2020-09-0510#...etc
[
'
2
0
2
0
-
0
9
-
0
5
1
0
:
1
5

我尝试了许多方法来获取列表中的元素,如下所示:

2020-09-05 10:15:00
2020-09-05 10:30:00
。。。等 但我不能 谁来帮帮我! --------解决方案------- 谢谢@Eddy

        if request.args.get('do')=='add_job':
            employee_id = request.args.get('id')
            employee = Employee.query.filter_by(id = employee_id).first()
            list_time_em = employee.free_time
            datesStr = list_time_em
            def getDates(datesStr):
                dates = json.loads(datesStr.replace('\'', '"'))  # make sure we dont break when parsing
                return dates

            dates = getDates(datesStr)
            return render_template('add_job.html',list_time_em=dates)
        if request.args.get('do')=='add_job':
            employee_id = request.args.get('id')
            employee = Employee.query.filter_by(id = employee_id).first()
            list_time_em = employee.free_time
            datesStr = list_time_em
            def getDates(datesStr):
                dates = json.loads(datesStr.replace('\'', '"'))  # make sure we dont break when parsing
                return dates

            dates = getDates(datesStr)
            return render_template('add_job.html',list_time_em=dates)
我找到了另一种方法:

        if request.args.get('do')=='add_job':
            employee_id = request.args.get('id')
            employee = Employee.query.filter_by(id = employee_id).first()
            list_time_em = employee.free_time
            x = list_time_em
            ls = x.strip('[]').replace('"','').split(',')
            print(ls)
           
            return render_template('add_job.html',list_time_em=ls)
        if request.args.get('do')=='add_job':
            employee_id = request.args.get('id')
            employee = Employee.query.filter_by(id = employee_id).first()
            list_time_em = employee.free_time
            x = list_time_em
            ls = x.strip('[]').replace('"','').split(',')
            print(ls)
           
            return render_template('add_job.html',list_time_em=ls)

这是在使用mysql库 导入mysql.connector

            mydb = mysql.connector.connect(
              host="localhost",
              user="root",
              password="",
              database="closer"
            )
            mycursor = mydb.cursor()

            mycursor.execute("SELECT message FROM message")

            myresult = mycursor.fetchall()
            li=list()
            for x in myresult:
                li.append(x)
            print(li)

您可以使用json库来实现这一点

import json

datesStr = "['2020-09-05 10:15:00', '2020-09-05 10:30:00', '2020-09-05 10:45:00', '2020-09-05 11:00:00', '2020-09-05 11:15:00']"

def getDates(datesStr):
    dates = json.loads(datesStr.replace('\'', '"')) # make sure we dont break when parsing
    return dates

dates = getDates(datesStr)

for date in dates:
    print(date)
在您的具体示例中:

import json

def getDates(datesStr):
    dates = json.loads(datesStr.replace('\'', '"')) # make sure we dont break when parsing
    return dates

employee_id = request.args.get('id')
            employee = Employee.query.filter_by(id = employee_id).first()
            list_time_em = employee.free_time
            dates = getDates(list_time_em)
            for date in dates:
                print(date). #try to print time in list from DB
谢谢@Eddy

        if request.args.get('do')=='add_job':
            employee_id = request.args.get('id')
            employee = Employee.query.filter_by(id = employee_id).first()
            list_time_em = employee.free_time
            datesStr = list_time_em
            def getDates(datesStr):
                dates = json.loads(datesStr.replace('\'', '"'))  # make sure we dont break when parsing
                return dates

            dates = getDates(datesStr)
            return render_template('add_job.html',list_time_em=dates)
        if request.args.get('do')=='add_job':
            employee_id = request.args.get('id')
            employee = Employee.query.filter_by(id = employee_id).first()
            list_time_em = employee.free_time
            datesStr = list_time_em
            def getDates(datesStr):
                dates = json.loads(datesStr.replace('\'', '"'))  # make sure we dont break when parsing
                return dates

            dates = getDates(datesStr)
            return render_template('add_job.html',list_time_em=dates)
我找到了另一种方法:

        if request.args.get('do')=='add_job':
            employee_id = request.args.get('id')
            employee = Employee.query.filter_by(id = employee_id).first()
            list_time_em = employee.free_time
            x = list_time_em
            ls = x.strip('[]').replace('"','').split(',')
            print(ls)
           
            return render_template('add_job.html',list_time_em=ls)
        if request.args.get('do')=='add_job':
            employee_id = request.args.get('id')
            employee = Employee.query.filter_by(id = employee_id).first()
            list_time_em = employee.free_time
            x = list_time_em
            ls = x.strip('[]').replace('"','').split(',')
            print(ls)
           
            return render_template('add_job.html',list_time_em=ls)

错误在哪里,您只是一个接一个地打印每个字符。我想获取时间戳:“2020-09-05 10:15:00”。。。等等,看起来您已经存储了Python列表的字符串表示。您应该修复数据源,以使用一些更合适(且更稳定)的表示,如JSON,甚至更好:更改模式,将员工的空闲时间存储在自己的表中,每个条目一行。在修复数据时,可以使用
ast.literal_eval()
将Python列表的字符串表示形式转换为正确的列表(而不是使用
str.replace()
和JSON进行黑客攻击)。结果:['[',“',”,'2','0','2','0','0','0','9','-','0','5','1','0','5','1','0','0','0','5',', '2', '0', '2', '0', '-', '0', '9', '-', '0', '5', ' ', '1', '0', ':', '3', '0', ':', '0', '0', "'", ',', ' ', "'", '2', '0', '2', '0', '-', '0', '9', '-', '0', '5', ' ', '1', '0', ':', '4', '5', ':', '0', '0', "'", ',', ' ', "'", '2', '0', '2', '0', '-', '0', '9', '-', '0', '5', ' ', '1', '1', ':', '0', '0', ':', '0', '0', "'", ',', ' ', "'"“2”、“0”、“2”、“0”、“0”、“9”、“5”、“0”、“5”、“1”、“1”、“5”、“5”、“1”、“5”、“0”、“0”、“0”、“0”、“10”、“15]”]我尝试将时间戳一个接一个地呈现为html,比如:2020-09-05 10:15:00。{%forfree_time in list_time_em%}{{x}{free_time}{%endfor%}让我在pythonthank中安装一个dbms库,我还更新了解决方案:)我使用:SQLAlchemyHi-Eddy,我还想将getDates渲染到jinja2,如何使用:)嗨,对不起,我有(或者我不知道)不知道jinja2是什么,但通过快速搜索,我发现它是phyton的html呈现引擎,因此,您只需要将getDates()给出的结果公开到一个变量中,并将该变量用于html模板代码,类似这样的代码应该可以工作:```来自jinja2导入模板dateList=getDates(datesStr)template=template('Dates:
    {%for Dates%}
  • {{{date}}
  • {%endfor%}
')template.render(Dates=dateList)```