在 sqlalchemy 中重新格式化行数
reformat row count in sqalchemy
我是 运行 一个简单的命令,用于获取和打印 MySQL 数据库中 table 中的行数,以便 RunDeck 可以记录它,并希望要么在格式化结果方面有所帮助,要么是一种更漂亮的方法。
from sqlalchemy import create_engine
devhost = 'host'
devuser = 'user'
devpassword = 'scipiodestroyedhannibalatzama'
engine = f"mysql+pymysql://{devuser}:{devpassword}@{devhost}/germans_got_lucky"
connection = create_engine(engine)
rows = str(connection.execute("SELECT COUNT(Day) FROM teutoburg_forest").fetchall())
print(rows)
returns
[(1706,)]
但我想 return
1706
有没有简单的方法可以做到这一点?
这里有三种可能,第一种:
from sqlalchemy import create_engine
devhost = 'host'
devuser = 'user'
devpassword = 'scipiodestroyedhannibalatzama'
engine = f"mysql+pymysql://{devuser}:{devpassword}@{devhost}/germans_got_lucky"
connection = create_engine(engine)
rows = len(connection.execute("SELECT Day FROM teutoburg_forest").fetchall())
print(rows)
第二个:
from sqlalchemy import create_engine
devhost = 'host'
devuser = 'user'
devpassword = 'scipiodestroyedhannibalatzama'
engine = f"mysql+pymysql://{devuser}:{devpassword}@{devhost}/germans_got_lucky"
connection = create_engine(engine)
rows = connection.execute("SELECT Day FROM teutoburg_forest").count
print(rows)
或第三个:
from sqlalchemy import create_engine
devhost = 'host'
devuser = 'user'
devpassword = 'scipiodestroyedhannibalatzama'
engine = f"mysql+pymysql://{devuser}:{devpassword}@{devhost}/germans_got_lucky"
connection = create_engine(engine)
rows = connection.execute("SELECT COUNT(Day) FROM teutoburg_forest").fetchone()
print(rows[0])
This answer 完美地去除了不需要的字符。
rows = str(connection.execute("SELECT COUNT(Day) FROM teutoburg_forest").fetchall())
print(rows)
[(1706,)]
print(''.join([n for n in rows if n.isdigit()]))
1706
.scalar()
给你所需要的:
conn.execute(text("SELECT count(tickers.ticker) FROM tickers")).scalar()
我还使用了 text()
子句,因为它在 sqlalchemy>=1.4
中是必需的
我是 运行 一个简单的命令,用于获取和打印 MySQL 数据库中 table 中的行数,以便 RunDeck 可以记录它,并希望要么在格式化结果方面有所帮助,要么是一种更漂亮的方法。
from sqlalchemy import create_engine
devhost = 'host'
devuser = 'user'
devpassword = 'scipiodestroyedhannibalatzama'
engine = f"mysql+pymysql://{devuser}:{devpassword}@{devhost}/germans_got_lucky"
connection = create_engine(engine)
rows = str(connection.execute("SELECT COUNT(Day) FROM teutoburg_forest").fetchall())
print(rows)
returns
[(1706,)]
但我想 return
1706
有没有简单的方法可以做到这一点?
这里有三种可能,第一种:
from sqlalchemy import create_engine
devhost = 'host'
devuser = 'user'
devpassword = 'scipiodestroyedhannibalatzama'
engine = f"mysql+pymysql://{devuser}:{devpassword}@{devhost}/germans_got_lucky"
connection = create_engine(engine)
rows = len(connection.execute("SELECT Day FROM teutoburg_forest").fetchall())
print(rows)
第二个:
from sqlalchemy import create_engine
devhost = 'host'
devuser = 'user'
devpassword = 'scipiodestroyedhannibalatzama'
engine = f"mysql+pymysql://{devuser}:{devpassword}@{devhost}/germans_got_lucky"
connection = create_engine(engine)
rows = connection.execute("SELECT Day FROM teutoburg_forest").count
print(rows)
或第三个:
from sqlalchemy import create_engine
devhost = 'host'
devuser = 'user'
devpassword = 'scipiodestroyedhannibalatzama'
engine = f"mysql+pymysql://{devuser}:{devpassword}@{devhost}/germans_got_lucky"
connection = create_engine(engine)
rows = connection.execute("SELECT COUNT(Day) FROM teutoburg_forest").fetchone()
print(rows[0])
This answer 完美地去除了不需要的字符。
rows = str(connection.execute("SELECT COUNT(Day) FROM teutoburg_forest").fetchall())
print(rows)
[(1706,)]
print(''.join([n for n in rows if n.isdigit()]))
1706
.scalar()
给你所需要的:
conn.execute(text("SELECT count(tickers.ticker) FROM tickers")).scalar()
我还使用了 text()
子句,因为它在 sqlalchemy>=1.4