Sql 如何从数据库字段类型字符串中获取列表
我在DB中的一列字符/字符串中有此列表: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
['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%}