python 赋值
- 切记赋值时使用手欠打上,号,会将原来的数据类型变为tuple类型,执行时出现报错难以查找
a = 1,
print(a)
b = 1
print(b)
output:
print(a) ->(1,)
print(b) ->1
- 从字段中取值时尽可能的使用get()方法,这样做的好处就是及时查找的值不存在也不会报错,会返回None值,也可以使用get(x, default)给查找不到的key或key值为None赋默认值
a = {'x': 'x', 'y': 'y'}
print(a.get('z'))
print(a.get('z', 1))
print(a['z'])
output:
print(a.get('z')) -> None
print(a.get('z', 1)) -> 1
print(a['z']) -> 报错,key值不存在
python 参数传值
- 当方法的参数可以使用字典时(尤其是拼接sql时会用到, 目前sqlarchemy 接受的值参数一般为*args:使用tuple传值, kw 使用dict传值),可以使用kwars传递
def dict_test(**kw):
print(kw.get('a'))
print(kw.get('b'))
print(kw.get('c'))
if __name__ == '__main__':
value = {'a': 1, 'b': 2}
dict_test(**value)
output:
-> 1
-> 2
-> None
python 三方包pymysql 以及aiomysql 获取主键自增id
- python 三方mysql包,pymysql 以及aiomysql获取主键的自增id均可通过执行后的结果去除自增id
# pymysql
import pymysql
connection = pymysql.connect(host='192.168.1.1',
port=3306,
user='admin',
password='admin',
db='test',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor,
autocommit = True)
with connection.cursor() as cursor:
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
cursor.execute(sql, ('xxx@163.com', '123456'))
print(cursor.lastrowid) # 获取插入后的自增id
connection.close()
# aiomysql
import aiomysql
import asyncio
async def aiomysql_test(loop):
engine = await aiomysql.sa.create_engine(user='admin', db='admin', loop=loop,
host='192.168.1.1',
password='admin',
autocommit=True, connect_timeout=10, echo=False)
async with engine.acquire() as conn:
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
inser_result = await conn.execute(sql)
print(inser_result.lastrowid) # 获取自增id
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(aiomysql_test(loop))
loop.close()
网友评论